{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": true,
    "ExecuteTime": {
     "start_time": "2023-07-04T14:40:44.463522Z",
     "end_time": "2023-07-04T14:40:45.677444Z"
    }
   },
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "from tqdm import tqdm # tqdm是显示循环进度条的库"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "outputs": [],
   "source": [
    "class CliffWalkingEnv:\n",
    "    \"\"\"\n",
    "    悬崖环境\n",
    "    \"\"\"\n",
    "    def __init__(self,ncol,nrow):\n",
    "        self.nrow = nrow\n",
    "        self.ncol = ncol\n",
    "        self.x = 0  # 记录当前智能体位置的横坐标\n",
    "        self.y = self.nrow - 1  # 记录当前智能体位置的纵坐标\n",
    "\n",
    "    def step(self,action):\n",
    "        # 外部调用这个函数来改变当前位置\n",
    "        # 定义在左上角\n",
    "        change = [[0, -1], [0, 1], [-1, 0], [1, 0]]\n",
    "        self.x = min(self.ncol - 1, max(0, self.x + change[action][0]))\n",
    "        self.y = min(self.nrow - 1, max(0, self.y + change[action][1]))\n",
    "        next_state = self.y * self.ncol + self.x\n",
    "        reward = -1\n",
    "        done = False\n",
    "        if self.y == self.nrow - 1 and self.x > 0:\n",
    "            done = True\n",
    "            if self.x != self.ncol - 1:\n",
    "                reward = -100\n",
    "        return next_state, reward, done\n",
    "    def reset(self): #回归初始状态，坐标轴原点在左上角\n",
    "        self.x = 0\n",
    "        self.y = self.nrow - 1\n",
    "        return self.y * self.ncol + self.x"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "start_time": "2023-07-04T14:40:45.684428Z",
     "end_time": "2023-07-04T14:40:45.697393Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "outputs": [],
   "source": [
    "class Sarsa:\n",
    "    \"\"\" Sarsa算法 \"\"\"\n",
    "    def __init__(self, ncol, nrow, epsilon, alpha, gamma, n_action=4):\n",
    "        self.Q_table = np.zeros([nrow * ncol, n_action])  # 初始化Q(s,a)表格\n",
    "        self.n_action = n_action  # 动作个数\n",
    "        self.alpha = alpha  # 学习率\n",
    "        self.gamma = gamma  # 折扣因子\n",
    "        self.epsilon = epsilon  # epsilon-贪婪策略中的参数\n",
    "\n",
    "    def take_action(self, state):  # 选取下一步的操作,具体实现为epsilon-贪婪\n",
    "        if np.random.random() < self.epsilon:\n",
    "            action = np.random.randint(self.n_action)\n",
    "        else:\n",
    "            action = np.argmax(self.Q_table[state])\n",
    "        return action\n",
    "\n",
    "    def best_action(self, state):  # 用于打印策略\n",
    "        Q_max = np.max(self.Q_table[state])\n",
    "        a = [0 for _ in range(self.n_action)]\n",
    "        for i in range(self.n_action):  # 若两个动作的价值一样,都会记录下来\n",
    "            if self.Q_table[state, i] == Q_max:\n",
    "                a[i] = 1\n",
    "        return a\n",
    "\n",
    "    def update(self, s0, a0, r, s1, a1):\n",
    "        \"\"\"\n",
    "        核心策略\n",
    "        :param s0:\n",
    "        :param a0:\n",
    "        :param r:\n",
    "        :param s1:\n",
    "        :param a1:\n",
    "        :return:\n",
    "        \"\"\"\n",
    "        td_error = r + self.gamma * self.Q_table[s1, a1] - self.Q_table[s0, a0]\n",
    "        self.Q_table[s0, a0] += self.alpha * td_error"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "start_time": "2023-07-04T14:40:45.695395Z",
     "end_time": "2023-07-04T14:40:45.731300Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Iteration 0: 100%|██████████| 50/50 [00:00<00:00, 1565.41it/s, episode=50, return=-119.400]\n",
      "Iteration 1: 100%|██████████| 50/50 [00:00<00:00, 1726.58it/s, episode=100, return=-63.000]\n",
      "Iteration 2: 100%|██████████| 50/50 [00:00<00:00, 1768.03it/s, episode=150, return=-51.200]\n",
      "Iteration 3: 100%|██████████| 50/50 [00:00<00:00, 1790.66it/s, episode=200, return=-48.100]\n",
      "Iteration 4: 100%|██████████| 50/50 [00:00<00:00, 2179.70it/s, episode=250, return=-35.700]\n",
      "Iteration 5: 100%|██████████| 50/50 [00:00<00:00, 3133.44it/s, episode=300, return=-29.900]\n",
      "Iteration 6: 100%|██████████| 50/50 [00:00<00:00, 2387.22it/s, episode=350, return=-28.300]\n",
      "Iteration 7: 100%|██████████| 50/50 [00:00<00:00, 2506.73it/s, episode=400, return=-27.700]\n",
      "Iteration 8: 100%|██████████| 50/50 [00:00<00:00, 2387.31it/s, episode=450, return=-28.500]\n",
      "Iteration 9: 100%|██████████| 50/50 [00:00<00:00, 2506.79it/s, episode=500, return=-18.900]\n"
     ]
    },
    {
     "data": {
      "text/plain": "<Figure size 640x480 with 1 Axes>",
      "image/png": "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f/HFF0UA4htvvCFvGzp0qAhAfOutt+RttbW1YkFBgXjRRRcZXmfq1KkiAHHdunWG4yTmzp0rAhB37NihuP7QoUMV4wCIU6ZMUWzbsWOHCEB88sknTV0rLy9PHDFihPx89OjR4lVXXSWKoiheeuml4iWXXCLvGzBggNi1a1f5udb7O3PmTFEQBHHXrl3ytgcffFDkv+rZud95552izWYT582bp/la5s6dK2+bOHGiCEB8+OGHFWP79u0r9u/fX37+8ccfiwDEZ599Vt7m8XjEM888U3VOgohHyK1GEAnEWWedheXLl+O8887Dhg0b8MQTT2D06NFo3bo1vvjiC8VYNmaotLQUhw8fxtChQ7F9+3aUlpYqxnbs2BGjR49WbJNcd59//jm8Xq/mfOx2uxyP4/V6cfToUdTX12PAgAFYu3at4Wv57rvv4Ha7cfvtt8Nm838VTZ48GZmZmViwYIFifHp6Oq644gr5udPpxKmnnort27cbXqesrAwAkJGRYTguFgwePBgrV66Ex+OB1+vFihUrMGjQIHmfZC2qqqrC+vXrZasRoHx/KysrcfjwYQwaNAiiKGLdunUBry2KIm6++WY899xzeOeddyxZdW644QbF89NPP13xPixcuBBJSUkKK5TNZlNZLAkiXiFxRBAJximnnIJPPvkEx44dw6pVqzBt2jSUl5fj4osvxu+//y6PW7p0KUaOHIm0tDRkZ2cjNzdXjhfSEkc8l112GQYPHoxrr70W+fn5+Mc//oEPP/xQJZTefPNN9O7dG8nJyWjevDlyc3OxYMEC1TV4du3aBQDo1q2bYrvT6USnTp3k/RJt2rRR1etp1qwZjh07ZnidzMxMAEB5ebnhuFgwZMgQObZo06ZNKC0txeDBgwEAgwYNwv79+7Fz5045FokVR7t378akSZOQk5Mjx/4MHToUgPr91eKtt97CSy+9hBdeeAETJkwwPefk5GTk5uYqtvHvw65du9CyZUtVVl2XLl1MX4cgYgmJI4JIUJxOJ0455RQ89thjmD17Nurq6uRYk7///hsjRozA4cOH8fTTT2PBggUoKirC1KlTAUAlcLQy01JSUvDzzz/ju+++w5VXXonffvsNl112Gc466yw5+Padd97BpEmT0LlzZ7z++utYuHAhioqKcOaZZ+pam4JFytriEUXR8Lju3bsD8NWHijfYuKOlS5ciJydHnu/JJ5+M1NRULFmyRE75l8Z7PB6cddZZWLBgAe6991589tlnKCoqkgOdzdz7wYMHIz8/Hy+++CKOHj1qes567wNBNCZIHBFEI0AqNFhcXAwA+PLLL1FbW4svvvgC119/Pc4++2yMHDnScnq+zWbDiBEj8PTTT+P333/Ho48+ih9++EHORvvoo4/QqVMnfPLJJ7jyyisxevRojBw5EjU1NQHPLWV2bd26VbHd7XZjx44d8v5QGTt2LOx2O955552wnC+c9OvXTxZAS5cuRWFhoWwdczgcOOWUU7B06VIsXboUeXl5OOGEEwD4hN6ff/6JWbNm4d5778X555+PkSNHolWrVqav3aVLFyxatAj79+/HmDFjwmpZa9++PYqLi1XFKrdt2xa2axBEJCFxRBAJxI8//qhpKfn6668B+F1U0q97dmxpaSnmzp1r+lpa1gQp+6y2tlb3OitXrsTy5csDnn/kyJFwOp14/vnnFce//vrrKC0txbhx40zP1Yi2bdti8uTJWLRokWYVca/Xi1mzZmHv3r1huZ4VHA4HBg4cKAsgKd5IYtCgQfj555+xYsUK2d0GaN93URTx3HPPWbp+79698fXXX+OPP/7AueeeG3QZAJ7Ro0ejrq4O//3vf+VtXq8XL730UljOTxCRhlL5CSKBuOWWW1BVVYULLrgA3bt3h9vtxrJly/DBBx/IrTAAYNSoUXA6nTj33HNx/fXXo6KiAv/973+Rl5cnW5cC8fDDD+Pnn3/GuHHj0L59exw8eBAvv/wy2rRpI7t3zjnnHHzyySe44IILMG7cOOzYsQNz5sxBjx49UFFRYXj+3NxcTJs2DQ899BDGjBmD8847D1u3bsXLL7+MU045RRF8HSqzZs3C33//jVtvvRWffPIJzjnnHDRr1gy7d+/G/PnzsWXLFvzjH/8I2/WsMGTIENkSxwogwCeOZs6cKY+T6N69Ozp37oy77roL+/btQ2ZmJj7++OOA8VdanHbaafj8889x9tln4+KLL8Znn30WclXs8ePH49RTT8Wdd96Jbdu2oXv37vjiiy9kwc3HjhFEvEGWI4JIIJ566ikMHz4cX3/9Ne644w7ccccdWLVqFW666SasXLlSzjDr1q0bPvroIwiCgLvuugtz5szBddddp9nLS4/zzjsP7dq1wxtvvIEpU6bgpZdewhlnnIEffvgBWVlZAHxFAR977DFs2LABt956K7799lu88847mv3EtJgxYwZefPFF7N69G1OnTsWHH36I6667DosWLQpr24rU1FR88803eO211+DxePDII4/ghhtuwLx58zBw4ECsWbMGrVu3Dtv1rCCJHsmNxjJo0CBZSLDiKCkpCV9++SVOPvlkzJw5Ew899BC6du2Kt956K6g5nHnmmfjwww+xaNEiXHnllSHHi9ntdixYsACXXXYZ3nzzTTzwwANo1aqVbDmiyttEvCOIgaIZCYIgCCIMfPbZZ7jggguwZMkSlZWMIOIJEkcEQRBE2KmurlYkAHg8HowaNQqrV69GSUlJo+rdRzQ+KOaIIAiCCDu33HILqqurUVhYiNraWnzyySdYtmwZHnvsMRJGRNxDliOCIAgi7Lz33nuYNWsWtm3bhpqaGnTp0gU33ngjbr755lhPjSACQuKIIAiCIAiCgbLVCIIgCIIgGEgcEQRBEARBMFBAtkW8Xi/279+PjIwMKmRGEARBEAmCKIooLy9Hq1atYLMZ24ZIHFlk//79aNu2baynQRAEQRBEEOzZswdt2rQxHEPiyCIZGRkAfDc3MzMzxrMhCIIgCMIMZWVlaNu2rbyOG0HiyCKSKy0zM5PEEUEQBEEkGGZCYiggmyAIgiAIgoHEEUEQBEEQBAOJI4IgCIIgCAYSRwRBEARBEAwkjgiCIAiCIBhIHBEEQRAEQTCQOCIIgiAIgmAgcUQQBEEQBMFA4oggCIIgCIKBxBFBEARBEAQDiSOCIAiCIAgGEkcEQRAEQRAMJI4IgiDCjCiKqPd4LR1zrNKNo5XuCM1ISb3HC1EUTY+vqfMAAOo0XpO73tq5gqXKXY+9x6qw91gVDpXXmj7uYHkNymrqgr5utdtjaZzZ8Vau5/GK2HusCu56a58pFlEUUVxajWq3R/PzWVuvvm5tvcfy55hHmrvWZ4elzuMNOCaaOGI9AYIgiMZEtduDEbN+QvvmaXhv8kBTHcC/3VyCG95ZAwCYfXl/jOlVELH5bd5fivNfXIopw7tg6lknBBw/a9FWvPTjNrTMSkFFbT2+umUI2uakAgBWbj+Cf762EreN6IpbR3SN2JwPldfizFk/obymXt724Lk9cNXgjobHvfrz33js6y1w2AR8etNgnNQmy9J11+0+hktfWY4bhnbGnaO66Y77+c9DmDR3FfIyknGwvAbzrjoVZ5yQa+laALBxbykumr0MV5zWHtPP7SFv/+d/V2DljqPo0DwVi6YOhdNh3a7xn8834Z0Vu5HqtCM5yY6WWcn4fMpgOOw2fLxmL+6cvwHP/eNknH9yawBARW09znzqJ7TLScVHNw6yfD2JCa+uwKqdR9E1Lx3f3n4GbDb1/wevV8Q5zy9Bbb0HRXcMhQDAYY+t7YYsRwRBEGHk70MV2F9ag+Xbj2BLSbmpY5ZuOwxRBEQRWPznwYjO781lO1HvFfHc938FtAqs230ML/ywDV4R2He8GqXVdfhk7T55/38+3wSPV8TTRX/C4/Vbj+Yt3YGnF20N25yXbjuM8pp6CALgbFg031u5W3f8vuPVuO/j3zBv6U4AQL1XxPw1eyxf95nv/kKdR8QLP2wzHHftm6vhFYGSshp4RWDKe2stXwsA3lmxC26PF28s3SFvE0URq3cdAwDsPFKF5duPBHXulduPAgCq3B4crXRj8/4yrNrp23bn/A0AgNveXy+P//6PAzhYXovVu45pWpXMIIqifI2/DlZg77Fq7G94bzbtK5XHHa6sxdYD5dh5pAq/7jiKEU8vxrylO+D1Rt4iqQeJI4JoxPx9qAIlpTURvUZpVZ3iiy7WVLnrsXm/ufkcq3RrjvV4RazZdQylVXVYu/tYUC4oAFi4qSTg+C0lZdi8v0x+vu1ghelrBUNmcpL8ePGfhwzfO1YISXyzqRiAz+Wy60iVvF26X6t2HMWML3/H8z9sw/d/HMC3m0twpKIWa3YdNeUWqqnzYM2uozhSUYtN+0qx73g1vtywHwAwaVAH/PrvkUiyC/jrYAXW7zmOjXuV8/d6RQx+/Ae8/+se7Gc++99uLsHOw5VYuKkY+45X44/isoDutpQk/xL5w5YDWLbtsOqz8Pv+Mrg5kclauIw4UlGLvw/53u+tJeXISk1S7Kuorcfa3ccUwnNhw/2XqKytx5pdx3CovBY7DlfqXkvLZbtwUwn2HqtSbDtQVoMDZTX47g+/SD9QWouNe0tRVlOHDXuOa/5/2FpSjtIq3/2scvvmVFGrvA8frd2LQQ3vzcNf/S6f60Cp3016zZursetIFd5duRt13ti52citRhCNlMMVtRgxazEAYOfj4yJ2nYvmLMO2gxX43+TTUNi5ecSuY5ZZi/7E60t2YMa5PTApgNtlxNOLcbTSjQW3DkHPVn6XyzNFf+LFH/3WgtcnDsCIE/NNXb+cWRC+++OAoetq2bbD+OdrKxXb/jpYAVEUTbnjguFolX+RvObN1QCA68/ohGlnn6ga+9dBteVrS0k5dh6uxJ5jVahlxM7CTSV4/vu/sGTbYdX5JSYN6oAZ5/U0nN+Dn2/GB6u1rTwnt81GVkoSBnVugcV/HsL4l5YCgOKzt3CztiA9UFaLYU/9pNh2bp9WeGFCX925pCTZ5cdXz/O9lmcu64ML+rYBAPy29zjOe3Gp4esx4uo3V2PDnuN44uLeuOej3xT7Nuw9jqe+/RO/F5cpti/afAD/N16EvcE99e/PNuHTdT4RaxOAFfePQF5GsuIYr1fEsSq1OPp2cwnSXEoZUPT7AcxZ/Df2HquWt72+ZDveXL5Lfj7zwpMw4dR28vMlfx3GFa+vxMgT8/HaxAG49X/r8d0fB3DPGKUr8vnv/5Ifr9pxFOe/tBRXD+6I0zrlyNur6zwQBODxi3rD5bAjVpDliCAaKawFwhNB87R0nXdW7gowMjq8vsTnkpjx5e+G4zxeUf41/euOo4p9cxb/rXi+0YJlrIKxGvx1oMLQdfV00Z+qbcer6nCE+ZVfUVuPC15eiue++0s1NhgOV6gXyVd+3o49R6tU2/WsWAs3l2D7IZ+VQgoheXP5ToUw0mLesp0Y/czP+OuAvrtRTxgBQN+2zQAAVw3uoNg+f80e3Pb+Otw1fwO++m2/6rjmaU7N80kWKT2OVqktS5+t8x8jiRItqtz+z8GBshqc+8ISTHxjFcY+9wuW/OWzQG3YcxwAVMIIAH7YclAhjNJdDmSlJOFIpRu/7vR/Xtk5eEUorJASpdV10PoKOFBWi9k/+T7rHZr74sjeXblbIYwAKIQRADz29R+K509+uwWA78cA+/eF743dkQDwxtIdKlfh6B4F6N++WcBjIwlZjgiiCVDprle4UyKBtFjGmrwMFw42ZDOVVtchK8X3uus9Xvxv1W4M6ZqLji3SsI9ZAHLSXYpzpDrtKGNEzp6j/rFer4j3Vu3GofJaXNSvDRx2AT9sOYgTW2Zg1xGlNcXt8WLPsWp0bJEmb/tt73GUlNbgzO55sktFomVWMopLa/Dg55vxwoS+sNkErN11DOt2H8e63cex/XAFJg3qgJ//PIysFAeuOK29buDqriOVWPznIfRslYlD5bUY06slAOhmen26bh9ObJmJ9XuOQYCAUzrmaAopAHj8my3o1ToTAPDPge3wydp9qDKZpbX1QDnOeuZn3Dy8C04oyMC5vVviw9V7sPtoFZx2fUtB94IMtM1JAQAM65aHSwe0wYer9wLQdv+xDOjQDN9uPqC570BZDb7ZWIyL+rdBRsP/kUWbS5DqdGjeq2V/H0ZpdR0ykx1YpHNOAHjkqz+Qk+Y739JtRxQC+8Uf/0LvtsbB4e+sUMZUNUtLwqkdmuPjtXuxcFMJTuvks5RlJDsUbryjFW58vGYvdh2pxDl9WuGE/AyF2NZidM98jDwxH3d/9Bv+KFaLK54MlwNrdx/DriOVOK9Pa4WIq2Qsp1rGz0mDOmDesp2Kbfz7N/akyCUkmIXEEUHEKdVuD5KTbEG7V9j4jooatTjyekW4PV4kJ4XHdM0v9Fp4vCLqvd6ImstbN0uRxdHaXccwvHseAODVX7bjiYVbke5yYNNDoxUuo9o65cKe5nIoxRETl7F61zH8+7NNAIBthyrgstvwCfPr/ZzeLRXn2ry/VBZHoijKbphHxvfCMc4y0at1FopLa7BgYzEuPaUthnIZT5+v34/P1/stF22apWJkD2133yVzlsv3AQDmTjoFQ0/IxeEKbXE0d+kOpYXhR9+fVlnJcuxOj5aZ8kK4aZ/vb9e8DAzvnocFvxXzpzREclvW1nlw78cbDcf2b98M/5t8muL/wuMX9sZdo7ph1LM/47iGhYfllA45sjhqlpqkuO8XvrwM+45X4+9DlXhkfC/8fagC173tyxzMzfCL5k65abALvlinH7YcQN+2zbDveDVcDht+uWc4Tn3se8U1/7dKP2C8ziNaKkcAABmuJIztVYCP1+7Ft5tLMP2cHrDZBPRslYkV2/2WpF/+OoTPGj4jS7Ydxic3DdaMNxrUuTmW/X0EGckOPHx+L+w/rrQWPT+hL9buOqYSMoDPmnnhy8sAAL/uPIY6j98stYKxAknxdzYB8ufq7JNaqs5ZWq18/6T/s7GE3GoEEYfsOlKJE6cvxNQP1gd9DjYYsrJWHSD6rzdWofdDi3BcIxYhGMwE25734hIMfvwHRdByuKmp88+Dj4kB/PeFdRlVc/NJdSrF217G5VRc6l9EjlW6FcIIAFZyLrqb31uH//68HYDSpfXJ2r2quU8b211+LM3PaxAMXlymH2x/kFt8r5r3K855YQmO6IijY1U+YdS+eSo65fotXV3yM+THXfPT8fLl/RTHtc1Jwf1nn4gbhnbG1JEn4N1rB6JVljLmxYg3GjLKjOhWkKFKX7fZBORlJmOAhvvlQSYNHoAinuzGYZ3x+IUnyc/3NYiCbxo+H0v+8rsGpXt1zZCO+PD6QoxtKLHwzcYS+f62zEpGXqby9U4+vSOuGtwBVw3ugG7M/ZOsbcer3DjMvD/DugVO+89IdmBI1xZIc9pRXFqDDXuPA/BlOLJImW2ALz7My7iP05jP9b8KO+Ch83riratPRX5mMjrnpcv70px2jOqRj/YNrjYe9ocDnzX4wxZ/ILckiPq2a4bn/nEyPrjuNIXg5DmrRz7evXZgxK3cZiBxRBAGvL5kB178ITyxHlaY27BgfLbeOCbCCFYclWuIoyXbDsNd70XR7/quAS0Oltfgzg83yPES2UyGTblB9o/HK2Lz/jIcrnCbTnEPBtYKxAqLI5yLiBVHvEso1ak0qheX1cjij7VS1NZ7VUJAyyLw6i/bVddct/s4AKBfu2x0zUvH05f2QafcdFx/RicAwJ6jVXjpx21yDJUWxyvdePmnbbL4OlRei7vnb8C63cc0x/9eXKYZe8Lyr8IOeHFCPxRkJiMj2YGL+rXGjHN7oEPzVNx5VjecfVJLRQ2fts1S0To7BfeN7Y7bRnbF4C4tcP3QzvL+m4Z11rqMjOTG6coszjxtm2kv0oAvSJvlgr6tMWlQB8W2Lsy52zRLxT9ObYfuBRmKMRnJDny2bh8e/GKzvM0r+lxD08Z2R4t0F0Y3iKPFfx6Ss7xyNOKZHhjXAw+e2xMPntsTb11zKnq2ysQ1Qzri+X/4gr9LSmtwqEF4ndohBzPONQ5S980vCclJdtmq8sri7bh7/gb5MzWkSwsAUMQLVbk9mDh3lRyj1KNVpryveboTEwd1QN92PnGZmZyE/EyfcBnePU+uhcSiJ5Zy0pwY0TCvdzVKLKS7HDj/5NYY2Kk5MpL1HVZXD+6IwQ2vI9aQW40gdKip8+CRr3xBvZee0laVAQL4flkeqqhF94JM1b5QcCWF/ruFDQyuMEgttjW4KkRRxPo9x3FCfoYqg4Xl9vfXY9nfR/D1xmL88cgYZCQ7ZMHw96FK1WIlwQaoRiYPy0eNnjiqVIqWXYw1SC2OlJYjUQT2H69GhxZpiqyfarcHBxrE0O0ju+JZJmi6sFNzOdA03eXAml3H8KdGIPKQrrm4g8loa9NQYHHNrmMBA8HfXL5TtkZdMqANHvpyM776rRjz16itUkbcPbob5iz+G7X1XozpVYDW2SlYcf8IxRg2869TizT8/Och33w1hEsLJobrlA45mH6OCw9/pQyQ716QoRDJPVtl4i+dAHBp0dZCWtwBYM4V/eTYKuV8/AKmd0MhyIKsZMX1XQ4bbtew1OakOuW4rh4tM+W4MOn1a4kj5dyTseDW0wH4/w9Uuj3Y0RCjl5vhkv8PGpHZICqGdcvDV78Vq7LyeCEj8ctfh/FLgzWsY4s0/LrzmPyYZ0D7HCzYWIwL+voKQXZlrF4jT8zDaxNPwbVv/qpI8wd8wlYqDKpFOiOIjMSRFFMWD5DliCB0YGugsD51llMe/Q5jnv3FMPsmGMIRk8Najvh6I2xxNSkl+OuNJbjg5WW44nVlajnPsr99C77kimJLkRjV6GEFiCeC7SaqFeLIv511twHKui/VbuX90RKHUtwRaznaX1oNj1eETfCJIZbRPfPxQEN6/I7Dlbho9jKFVUKibbMUzedbuc9Us1S1q4F10xWX1uBvnaD4wV2aY3AX/TILrbNT8NUtQ/DZTYPROjvwAnViS/+imeJUf1ZZ10lBVjI0iiLj9K4tkM7c52acyHjnmoHy4xbp+uKoN1P1uoPGgg8AgiDg57uH44ubB8tijhcTetZM9tqCIMjWEyn2ShJH0n0zcimmOh2yyJGEb26GSzNwmUcSFWka9xsAWpl433LSXPjprmFYcOsQzXv66AW98PGNg+SyFZ1z0/HRDYV47h8n44mL+/i2aVj4uuanKz43j17QC0l2/4tKZyyxet9tLbOSNYV2rCDLEUHoUMYECdbpxNNIi+/y7UcUv7JCxRVEewAeI3HExuJI5fw/W++LnZHcPWZhC8IZiSM27ilQ/ymPV8RV835FpxZpunVxqt0e3PzeWrRuloKHz++FjXtLcfdHGxTBttLctHo2HWPEUZXbg2q3B5e/tgJDuuaqLEeAP2ONDR6VhFJeRjK6cW6a9OQkDO7SHI9yac88/C9u6Tkfw9U83aUK4GYpKa2B0669ynbNy0DfdtlYus0nbHMzXAr3nyAA7ZtrCwstLurXBn8Ul6Nvu2zN/Zkp/qWlIDNZ1TLCJgBTzzoB3/1xUP5sNktViqMhXVvgkfG98Edxmewy0iIjOQkzzu2Bo5VuRXwPT7vmqWgH/73OzzQXF5XMWXELGo7784Dvs56T5hMZc686Bc9+9yduH2nckqVlVgrKasqxqMGd3SLdqdlSg0fKpNNL0GiVHfj15KQl6QpIAMhOdaJ/e+X7MKBDDgYwz7vmqe9xl9x0nH9ya2zYexyXDPAlEry+ZIecwZpuYC2S6NXaWmuXSEOWI4LQobTav5jXBgg2rtexLAULK470qjOLoogPft2tWw263MCtxlpXpO9l9pek3jVZi5OUIs9aZ7ZpFA2UYC1Hemnfm/aV4sPVe7B651H8/OchzUwZiemfb8L3Ww7irYYaLNe9vVr1619yqxUfVwYuu+u9KvfYT1sPYu3u43j++7+0xVGD5UirmF5+VjKyU52Ke5jucqB5mrbFg7Xi8OJIz3Ij3W89SspqNH+VJ9kF/KuwPQo7N0eGy4E+bbNxw1BlHJAZtw6Lw27DjPN6yn24eDq2SEOLdCfaN09FdmqSyo36xMV9kOp0KNxd2alJePLi3gB8RQYB4MrT2uOxC04KKB4mDe6IO0Z1s5TZOaB9juZ2Xojx5yzIUr4/Ug2lE/Iz8PLl/XFCgB9J/A+VZmlOTcsa4HPVSkiWI72xzdNciqKVF/ZTvzdGFjizdNGwHHXOS0ezNCde/Gc/OcOStQKlG7jpzz+5FdJdDtyvUYQ0lpDliCB0YC1HgXoLhbvIoov5kqut1063X7rtiJwCrVUBu5KzHFW7PbILhI3/qfeIqKnzyDVZAF/mklYsxT4m3TevwXXiNWk5YheFKrd2DNQ5LywB4Mv2McLjFVVxNSUamVuSy2/XUaW7qaS0RiHqymvrkcp8gWtZaPYcrUJtvUdhcZJo2WBN6JKXJqfKZyQ74HTYkOFyqALirzytg2zFKeAsGMlJdpVlBwDsARb+4tIaVUbXBX1bY8a5PeW2FCvuHwGHXcD81cp7Z1UcBcLlsOPne4bDJggQGv4pr+f7y7rfslOdOK9PK4w8MV/lYguGAe2bYfWuYzi9q7bVaUjXFlh1/wjU1nsx4b8r5EDmE/IzFMUseTHCu+OsznV491xFDaMOzdNU9/+S/m1w/9knwm4X5Dg26QeT3ntltwvolJsmF4E868R8/Kuwg1xFHFB/1oKhc67a8tQpV0Mw5frj0ozijJ6+9GTU1HkM4xxjQXzNhiDiCDbmiI9X4akPtzhiCvtVuT2a4oitV3O8yo1szi3BipGfth7Ec9//hdtHdMUtI7oqgpYPldeicOb3CkGw52iVpjhiaxlJ/aTYl777aBVq6rTnywqiQG41NjBXq5VGGVcXRRRFVUqzb26+jbxo4/tJFf1+QJG1pxVDtnl/Gc58arFCIEoUZEniKF2uOSN92Wt9Ns7snofZl/dDZkqSHPPF4tQo7BhIvxworVG5Y1tmJSv6dUlz4hdYE14dy7AZf/z1pKe5jCUju8EyFg5hBAAvX9EPH6/Zh0sGtNEdI6Xgt8xKZsSRcqHn58674/Sqb+tx8/CuaNssFb3bZGNLSRkKOzXHYS5ZwCYIaJbmVFhwJeO0TcffYxMEdMlLl8VRTpoT7TirZIGFEgt6ZCQnyUHpF/ZrjaEn5GpaO1kLk5HwsduEuBNGALnVCEKX0gCWI9Za5NFpkLh022Hc9/FvKlO6FfSsLOwXyvqGtHoW1pW2dvdxeLwiZjW0q6h2++e7aX+pylKyhxMPEmx9E0ngsF/gXlHb7QQAlbWB3WoSDmYF0AqGP64SR9rneWfFLsxatFUljvRen8TOI+r9Ow5XagojwF/OgI3HkFwJNdxnp0W6C06HDWNPaqmbtqy1AAay7hSX1ahEpF6QLi+GItXHzX9+/vq+DaybJ1sj4DwU8jKSceOwzqZcSeP7tka6y4EOzVMVZQrYuUrwlqNA2Wo8BVnJuH5oZxR2bo6rBneEzSaoxWrD+8++L9J3jN57ZROU5RCapztVrthwiCMAmHBqO3TKTcP9Z5+o61rV+r+QSCTejAkiRI5VulFSVoMTWxqn3yvcahqWIzZgts4j4q8Dvq7abMr/5Q1NRTOSHXhgXA/VOfRgs7mWbjuM8X1bq+JJ2CDj9XuOY1g3f1XZwxW12GTQmZ4VXCWlaneUFHx8pKIWv+48hs65aeian6EQQnK2GqdMSqvr0LIhLqO23oNN+8pwcttspeUoQBFINtOl3uuFk/sdxwswvUKJG/aWYsPeUlVQLdsOJBxIMUrsr2XJlcBPLc+gCJ6ElgtNz2LQsUUadhyuxIHSGrTIUC7UeunV0bAcGZ1fWuBZtxofkB1NLh/YHpcPbA8Aql54/H0PVRxpoRa+ArPP96NDaheiJ5JtgqAItm6W6lRZJfn6XcFy64iuuHVEV8Mx7P8FLetovEPiiGhyDJz5Pdz1XlUndh6l5chYHO09Vo2znvkZgHb8j5Ylwgh2sb/34434decxPHVJH8UYVhxt4urhXP7flYbWGVacHNCI1ZHcZ9e9vQZrdh2DwyZg5f0jFPOSLEe816iMCWS/96Pf8Nn6/Zg2tjuSFK5CY0saO7auXgS49aeUs3QFcmryblHJrZaZrGwTooXLYUOK027YokIKhGV/uUu/lrvkpSssV2ZqWGktgAIEtEh34XBFLdrlpGJ3Q52m9s1TseNwJUrKapDqUgpovkyAfC4dS06k0Is5ymAqIWeF2XIULGrhqHzenLNEhUcc6T9fPm0E9h6rRu822ZpjJQQBCjca72aPNux94e+h1JLGzA+FWEFuNaLJIYmacc8vwW3vr9Mdxy7yWu0uaj3+bVtK/I0X1+85jjHP/oxvmSJtXosxSfz4jzSK+rHijF/g+Ro5LKIoKl6PViDzT1sPot7jlUVXvVfE78VlYH9U13tF1Hm8smCS6rewolKq8P3G0h2KAPHAbjX/l2mdhsvyeLU5yxFPp4Zf1nsa4kvM1lW5f+yJuHxgO9xyZhfN/VKMVV5msvyrWnJ7zrmin9x2AggcWA1oxxcJAvDOtafi7JMK8MYkf3K1ZHFx13tVsVytdcSRnhsnUqhijhosI6yFMCNOXC+BhKPdJuDf407EgPbNcMdZJ4QlXkaAviDLz0xWdKg3shyd1DoL1w7piGlju8eFtebJi3vjkv5tMPJEZa+0eVf7PsfvXDtQ58jYQ+KIaNJ8vn6/ZvbR5v2l+GD1Hvl5VZ0H/1u1W5GqzooT1tJxfUNK+fUNzSsB6wHbZrLf2FgcrTo+elS5PQrLkVaw+eEKNxZuLlFYzLYdrFCJkOo6j+w2kn6p8sHSgO8XbSWzcGsFZCsEIfO9rlUm4Vil8hpm+rq1zk5Bi4ZfqpLlqI2OeOC59JS2ePSCk3BlYXukOe2qgo+su+KOs05QVLzukpeB2Vf0l5+bWbS0FkCbIKB7QSZevrw/uuRlYGRDob4Jp7YD4HPF8qJTr+AeL4YiHnPEX79hw2mdm8PlsKFnq8yIz8Esvuw69rl6zLWnd8JHNw4K6FoyfU3u/TD6iOjdJikz8N/n9FC0b4kllwxoiycv6SNXGJcwW/YglsSHVCeIGKLlMvvHqysUz99dsUuuoSO5zRRd7xmryIEydW8ts5YNCTNlk1hBxD4OJKyOVroNLTcuhw219V65X5fEXwcr0KeN0g1Z7fbIr61ZahJ2H/Vbjthsv7bNUhWuNK3ru3UEnpbw4wOyA3VlB3y1WCRDhfQe6VlWWEYwv3rzMpKx4v4RSE6yo9eD38qfnRSnGVeZzwVppneUtjhSPn/lyv5yiQbAZxEMZJHTO3+k3Wp6YiwzOQlr/nOWZnZeLLEJghz3F+l7o3UNI6GobznSHt+7TRZ+21uKUT3yg55fUyS+PpEEEQO0goPLOTeVVmsBdjFnG65qfUlZrYPEu9W0Fg9WNLBCjX1875ju4DlS6TZMpZf6Km3Yq4xj8lmOlGNZcZQlWY4a7gUfZxMoW02v0KaWOCrlArL1MuRYuuSmqwJSOxlUCwZ8wdMzL+it2JaRnIQku01RU0irdAHPoqlnYNrY7rh+aKeAY7XWPy33TlZKkvx584rqNij65492QLZ2Kj/gi83i6zPFGvZ+RMM7pY450r+onuVRT1C9euUA3DumO/7fRb019xPaxNcnkiBiQGWQafZ19X6lwIopLR2k51bbvL8Ud8/fgOJSZfYU33vM7fHino824AhT26iWy5bzb/cLD747OQAs2lyC/1ug39LirB75igrRUvfyv3XcatJLk3p/lVbX4XBFLS6avcw/pzqv4j5/98cBzGfcloBS1LGX0bp3fOmBoxquUZ6u+emqytdaxetYbhzWWTdQmHVZmckC6pKXgeuHdjbVN08zIFtn8ZO2e7wiqhqEvsthU8Qlqc8f+HqRJNrXswp7r2NhOTISZHr79LYXZPlKGoSrflRTgcQREXeIoogNe44HLVqsomXF0OpYzeP2GFtCWPQsR+e9uBTz1+zFLe+tCzj+w9V7MZ1pXKplOSqvqZO7btttAlKcdlWdl5d/+ttwrtmpTjmeBYBc9+VIpVsRpA74XreU3i8V8Surrseby3YqBE6tx4tKzqpx90e/KZ67ddyE63YfU7jkjle5sXLHEcWxP209ZPiaAF/WGB882zZAQLbRwsgWXEwxYTmyglaAtH6sif+xdM9X/3skzuyu70YxsuREgmiXDggVdn7RiIVSBYEb3CD9OkdxflMTDBJHRNzx5W/FOP+lpQrLQ7jQyhrTSiuXvmaMMmgC9Vtj0bMcSSLoNy4VXy+77W/GVaUQRw2PL3tlBSa/tRqA3xWn1c3diOQkGxdQnC7XCWKrcgO+LD5pqlJAdml1HRZuKlGMq63zBhSQuq7Bjzdi2JM/yfVnpn6wXhXXZdSDTX4duWrLUX6WcSqx0SIeUXFkIuZIQsvNEsiSFW3LUbRjnELFprAcRfd6gLFYNcpWI8IHiSMi7vi4IW1dK84nVLTSwrUWbcl9dLJO13HAXIaUfL4AMUfuei8G/F8RLn1lOdz1XpVbTQutbLXfi/0lBaR6OlpNVI1ISbKjQ4s0zLmiP84/uRXGndRSbqB6hBNHVVxANuArZfDXwQok2QXMONdX+LK23qNpCRz3/C94e8UuxWsA1MHZB8tr8dqSHQCAH01YiXgktwJ7L5qnOeFy2PHI+T11jzOyGrAZiikW73EgtK6rt/jxY50OW8CMOHXMUaTFET+BiF4uZNj7EY2UeCvi0ajOERE+SBwRcYfVzC4raKWFay3akpYxsghYEUcb95ViwW/FhmMOV7ixasdR/HmgXFdMsbeGt7ToBXFbXbil8WN6FeC5f/RFmsuBZg1NaQ9XKGN7qtz1qlR+ybrUo1WWnDrvrle71QBfv7L/fLYJm/eX6lqOJJ4p+lNV7JLl5LbZuvtua0i5ZttpSD2yrizsgDSde2RWNIRbHNk1Lms2S8mMGI62myvaRSdDhZ1edGKOjJ8r95HlKBqQOCLijkhpo2q3RzPzychyZJSFpJd6rseU99Yadq2XqKnzmLQcKWN0DnJd3P2WI2sVO7QEYU6D5Yh3q7FZb3xvrMxkhyzQauu9qKrVd6u9s2KXwk2pJY5q67147GtfIHm6y4E/Hh6j2G/GFTGcabHCvn9W06MBZdB8NNxqRvVtWNJMvN8qQ06MKmTHK+w9jYbmsGLJ0/0c0GoeVuh2EnGHGLAZhHXeX7UbJ05fqFlpWsuiIYbZciSh1aqDp7rOAzO6SymORLmdhIQkTFqkW8tS0RKEUudxXhyx9Z34dgUpSXa4Gs6lZzmSOFzhVlqOdG7Asr99gdgdW6QhxWk3/QtfWozZjB22T5yem8fonKylLtyuF70ikFrw1zZjxeIX0min8se7lcNm8nMVqWsGV+covu9pokHiiIg7dBrch8R9n2wEAM0Udq2aP9LCabTQBCOOXCbqubC1g4zgu9XvOKy0Skkp43ec1Q2dWqShU27gDDy9OTaTXWa8W81/7/gO4KlOuyzQqus8ciXu1hqd4str6hSCiL+3bM8yAGib4zsHuxzYBOCNSQPQLicVJ+Qrx7MLx3uTB6JjizQ8esFJmvtZjNYbM9a9YNGuc2RurBm3WrRjjhIs5CjqAdlWrhmMlZOwDokjIu6IZMyRFpUa7h455shIHFl0qwH67RxYfJYj3wRO6dBMsY+1qvHX//tQpeK5VFivICsZP9w1TLcvGI/Wr9bmOtYn1hqUzmX2pTgdsmuPLdL4+c2DVecpr6k3tBz1aJWpeC6l4CvdHwLO7J6Pn+8ZjlM75ijGs6nRgzq3wI93DZO7nPvOo/nyDEWD1cKeVrBS54gfmxxEHaVYVciOV6Jd54i/Dt9rTTlOe3u839NEg8QREXdEWRtppvLLMUcGC00wlqMkR+AvsNo6r7zw8mJKLyAbAHYcVooj3gLEn2tiYfuAc5HQ6zzOBrOnOO0KFw9rOZLaezhsgqarUiWOuNfWPM2FXKaDd9scDXHEjLf6y19XeBh8Q1ptJmwFa3WOOKFj4ludvyeRXlcTL+bI/zhaokPpIjYaR261aEDiiIg7om450nKrNfw16pkVjOXI6BehhK/qtCSO9K/PB5ezLUwAqFoySLWKJM480XyvpWap2uKIzf6zC4Ii6yvVaVddM5UTUBI+t5r/feDFEf9a5H5nOrEheo/1CMZyFEFtZCnmiJ97MI1to13nKN6tHDF3qxlcVO/9jXfBmWiQOCLijmiLI7Yf1YGyGry1fCcqGtqBpBhk/gRjOeKDzbV6prFuNRcnLtijeXEkxfRI8JYi3gqWmWw+i03PrcYWtxQEpWstxWmH0668ZprLAYemODJ2q7kcNlx3eicIAjDzwpPQMssXc6QInGVulVVxFKg1hxaRjTnSEkf6Y62mnqsrMluZnXX4GcX7Qs7OLxp1jvhrGmde6m2P85uaYFjL8SWICOHxiqj3euFy2EP+RV7v8cIrKq0NUkd0LdiYo5d+3Ia3lu+SnycbWG6CEUd8sLnTYVMJgRqF5Ujfrcf2dgPUFbtVbjVOaGUk+wOopc7deuhV2WZdSzZBQCojjlKT7KprprkcmotNvVdU9KfTshxde3pHXDqgraLXGWuJ0/u1b2bN0BtitC5G1K2mGZBtnMFkpYs8WY6MYecXrbmaFfTBJA8Q1iFxRMQF57ywBIfKa7Hk3uEhJ/KPe34J9pdW49cHRspp6U6HTWVZkWBjjo5wDUzDna2mshw5bIAyO15pOTISZ5yoqq1TugcDxRyxlqNrhnTEkQq3KpBZIknDwgUoLUc2AYreZalOh8oylua0QxAE2G2CKqCZzYTj763LYYMgCKomsHqxIaxbIhg3U6DtQGQtR1YCsn3jAQ/z2Or5I5/Kb/w83lBaIaNzTfMxR9rbyXIUXkgcETGn3uPFHw1tL4yqQ5tl6wFf25EtJeVy1WSnXV8csTFHvMAwrHMURMwRv54maZRCrnH76xxZiTniLUfqmCP/a0myC0hWtNJw4fyTW+teS++L18NZjtJd/nOmONWWI6kgpZY4mrPY3xCX70Wndx/0ArKtupmsdjoHop+tFji92zcfc2JQ+Tzi1pFoXy9E7LHIVrOZuybVOYoOFHNExJzSan8gcarToYo5qqytx7rdxyyfl7UIOQ3cU1VMxhUvMAwrZAdjOeLWU631tabO63erJfHZaup+av7jjC1HbHC0y2FX7OerW/PoBYjWM35CQVBW42az1STSGsSTVtyREbruRZ1f21YrHAcTczRpUAcAwJnd83THBIvW7TGOQwktxir6jWcjermQiXVAdnBFIMM+pSYNWY6ImHO8WpllxQuIW/63Dj9sOYjn/nGyoXXDd6z/YFYsGFlgqphxvMAwWsSDijniXpxWO5Nqk/Pmi0CqxBEnrFiBkWQX4LTbZAuOXsC1hF3XcuT7Kwi+L3Q+INvBXANQWo6swFvBJPQz1LTH6BGMq+LWEV1xWqfm6GvQnDhYrGSr+faZG6c1Xut5uEm0Ctns9KIXc6T92GgcS7xb4xINEkdEzDnOFAj0eEWVgPhhy0EAwFOLtpoQR/7H1W6/8NBbXAHAw4gM3nLk0OoAKo0Nxq3GPddqhFtd55Hny4sjdjQvzlRuNbu+5ciX4STgntHdcLTSLWd/6aH3hexpsBxJi12ai03ld8jzqPZ6Gvb7tlm3HOmJI/9jvcJ9wcTgmDk2yW7D4C4tAp88CLSyx8y6WuIxlT/R1m2rlrhwYLbwpH6do7BPqUlD4oiIOVKBQMDnptGLc91ztFpz+8HyGnyzsQQX9mutiBGqdNfjf6t2o2+7bM2UeQmPjrUJAOwGOc7BudUCW45q6jyyeFC5k9gikA3HOu2+jLdAcTqsi1Cax/VDO5uat75bTcqQ8j1P49xqgC9LTrKGSXWQjO6rFnriVplVpL3djFiItyBXrQXQ0K1m074PuuNV2WOmpxYUaktVfK/ksXGraT82GqfcHt/3NNEgcUTEnGOMONKyHKUk2eXFtd7jhYMTOv96fRW2lJRj9a5jePrSPvL291buxvo9xwEAJ7XO0r0+ez2V5SjsbjXlc17QAD5xJIk8vTpH7novatySNcYOd5V6LrygYF+L1VBi3q0mucqkeyfIliO1OGKFaWrQliPtmCO9BcVqheN4S48Oxa0WjBiMvOWIs1TFebSrIqA/anWOQo05InEUTuL8I0o0BVi3Wr2GOGrX0CoCAP46qGyuCviy0gDg643FCquTJIwA4y84Vp+oLUfhFUesLPF6RS7by/eXrZDNW7zqvb7WIqOf/RnlDYHkqTqFKsNZW4a/f9J9kdyC0m7WcifNixV4fstReGKOoFvnyNov/3izHGnXOTIaz1jKEqDOUbwv5LFwq4Vc54hW87BCt5MIGY9XxIwvNuObjcWqfZ+s3YtHF/yuciexsNlqHq+ocquxbq9dR5T9w/h56FXXNioPwO6zYjnScokFgp1GHZPp1TzNiZkX+rrEV7v9dY54UVJXL+JYlVvRR41v+Oq/lv5rtlqiR9WiouELWp5nw3P2e1vLciTHHDGxXGeckBuwk7yZmKOQArJ1tsdOHFm0HCncaibEEXc7I20c4U8f39Io9nWOjF2oOtvjXHAmGiSOiJD5bN0+zFu2Eze+u1a1744PN+C/v+zA4j8P6R7Pdmyv96gFTj0jQkpKa4Kao5b7SsJrEHPEu/BYghFH7Etjg7F/uXc4uhVkNszBC2kXbwWo83hVC0uqS1tYGJXhMRKrWvCWHkk08lWZ2S9olxxU7p+fFLDNnu/MbrnYOGO04fXNZKvpxRwFUzHavz3goRFBczom41AMPrLM+PBZFc2QaBWyY285MjdOuT3cM2rakDgiQuZQRW3AMWzQtdE+n/VHuZ9NWS8uMxZHems+L3pYpOuJomjKciRZmiTBZcVFxAoxVhw5bDbZJVVT55GvwZ/b7fGqKjMHZTkyPWMf/BeyZPmRLEfSbq1YH1bYSK429r7aG9L9jdCzHJkRROa61OvFHCWI5ciyGDR+Hm7UMU6RvV6oCCaFSjgxGydHMUfRoVGJow4dOsgpytK/xx9/XDHmt99+w+mnn47k5GS0bdsWTzzxRIxm23gw81+Sb5vBwrrV6r1eteWIcT8dCGA50rtOabW+OAN8wsjtUWfKaS3a0vzMtPhQX8f/mHWrJdkFWRyx7UNUbjWPV9WfLU0n5sjQOmTZrcbHHPlesz/mSHKrqe9XGXPve7fJUp3PTHC2uTpH0HlsPUBZ6zzRRCtuyKw1wUwAcbSLQPKnj3/Lkf9xtOZqPpXf2nYiOBqVOAKAhx9+GMXFxfK/W265Rd5XVlaGUaNGoX379lizZg2efPJJzJgxA6+++moMZ5z4hPqf8hhX54hd099avhOHyv2WqeIA4kjPlcQGfWvh8aqtRoCO5UiU/gYhjqC2HDlsPiGf7PSdp6bOI1uH1G41UWU50nOrGXn9LGerqQKypWsoA7LH9ioAAPRv30weu52Jj5LqKbExR9I9Hn9yK93r62WrCToiKNSK0fKxMVJHluscWYyRiX1AdkQvFzKxqXPEXl9/HFmOokOjS+XPyMhAQUGB5r53330Xbrcbb7zxBpxOJ3r27In169fj6aefxnXXXRflmTYeBBO2IyMjRlm1v31HvVdUWDymf75ZMfZAQLeaTkB2ADXgFbVdb+YsR3YAxpYp//z8j6WYJUkoSHWI2Lnw8SMer4g6TsTp9X/rmp9uMA9r8oi/DY6G1ZiPOcrLTMZvM0YhlZlT7zZZ+G1vKS7s6y/gydY5kl7/M5edjMtOaYcJ/12hur5+nSNrj/XQrToc+NCIoF3nyJyrxVy2Gn9y01MLisTLVtN+HNlrmhNk8fZZbaw0OsvR448/jubNm6Nv37548sknUV/vX3iXL1+OM844A06nv1XC6NGjsXXrVhw7pt27q7a2FmVlZYp/hJJQv+fYwGatmCOW4tIaw4U92FagXlFErUZjWiNxJM2Tr0VkhJY4SmoQCqzIqWhI09f6kgzUYPb2kV0x49weshUnHAiCoFlLxx9z5N+ZmZykCGR/YUJfzDi3B/7fxb3lbYqYo4bXLwgCWui0MTHTeDYUy1H8xRyZ2+bfZ82tFm1LjrrRbWSvFyqCxfsZDpSuPKNxZDmKBo3KcnTrrbeiX79+yMnJwbJlyzBt2jQUFxfj6aefBgCUlJSgY8eOimPy8/Plfc2aNVOdc+bMmXjooYciP/lGzrPf/YWK2nr8q7CDah+bSVbnUcccsdTWe1FaXYfsVO1FVAym9BB8oqW2Xm05kkQBK9ikx5IwSDZoasujCMhuOF6ynCQxgkISalrijLdw8bWQ+rZrhqEn5BrOIxgRaRMEef6SuKmX24foH9e+eRomDVb+v2NfFyuU9LID9SqcCzqPFUIuAWOOrAZk67kXzYw3e0woJHLMUbzVOaKYo+gQ95aj++67TxVkzf/bsmULAOCOO+7AsGHD0Lt3b9xwww2YNWsWXnjhBdTWBs6m0mPatGkoLS2V/+3ZsydcL63RYObLY/fRKkz/fLMiLV+CLYQYyHIEAIcrlPFD7MJpFPhthEcUUaNhObIJaoEizVd2q1mxHDGP/W41//HSpWTRYUYccVYVMwu61TpH/FykeyIFh1tdQBwa5+K3611bsV03Q83/2MzU9PtVxcpypOFWMxjPCsD47K2WyDFH0bmmld5qarEZ/4Iz0Yh7y9Gdd96JSZMmGY7p1KmT5vaBAweivr4eO3fuRLdu3VBQUIADBw4oxkjP9eKUXC4XXC6X9Yk3Iaz8nzxeXYcW6cr7yQomPuaIRbLg8JalJLuAhk4aQS36QINbTSMg29YgwFlZI8puNesB2Vqp/Ek25ZeiVxTlfVpWjxpmnkvuHY5P1u5TzTkQXfL045H00FqA+YBs0+fSEURJZor0MCgsJjZ2u1W3mt722Cw4Wpc1cu/o1XsyM97sMaGQeDFH1j4/4bmm9mPtsYIiMSPe72ciEvfiKDc3F7m5xi4CPdavXw+bzYa8vDwAQGFhIR544AHU1dUhKSkJAFBUVIRu3bpputQIc1j5b3m00q0SR2rLkbbCcTnsijR3iSSHDZI60hJObJ0kPcY9/wv6tlV/BgRB/UUlXV5yiyXrBERrwhaBbDC7JDlYy5FPiElWJa0vPclylJvhQptmqSpBYfQ9+cXNg/HK4u24d0x383OW5+Z/LLkC6zVijsygazmyWzuPsvGs9q99M3WO9K4aqzVH03JkMBd2XzAB2RG3HAV4Hm9YDegPB2Z7qwG+99gDVhxFbFpNlrh3q5ll+fLlePbZZ7FhwwZs374d7777LqZOnYorrrhCFj7//Oc/4XQ6cc0112Dz5s344IMP8Nxzz+GOO+6I8ewTGysL49FKdUp9HSN26g3capL7SC2A/B9jPs395LbZpua152g1vtiwX7XdJgiqxUYSZ16vdcsR6/arY1L5JaRLyd3uNU4tZ7IJUqyScn5Gi2PvNtl46fJ+aNc8VXeMHkq3mvK9sNpIVJGtxjxOsngiRRCrYrtVy1G8udW0tpmzHAVTuiDyAdm8pSq+V/N4txwlWgxXIhL3liOzuFwuvP/++5gxYwZqa2vRsWNHTJ06VSF8srKysGjRIkyZMgX9+/dHixYtMH36dErjDxEr/y+1xJHCcmQQkC2JEL4IIhtzVONW7uzVOgu/7tTORDSDz3KkfIGSW80ju9WMLUdpTjvys5Kx/VClYu7lNb6MtCQ7bzliqm9rZatxwdoql0WEVjotV1i9gYXLCIeOtciy5Ui38Sw0t+uhK45i9PNROyBbfzz73pjLVgt8vXCiDgCP6OVCJhap/FZcwYlWNyoRaTTiqF+/flixQl0fhad379745ZdfojCjpoNVtxqLKCo709drNJ4FfP/5JRHBW4fYBbXS7S/d8PrEAdhSUm5hdmoECKrFhs9WCxSQ7bDbkJnsc+NKM1+14ygmv7W6Yb96UZdEh2a2WkNWnbRw82Mi9UWpqKWjijmydlG7RhFI9rwsH984SPc8gs4iZrn9Q5zFHGkJHLO1b8y51aIcc6T6jMb3am61NEJ4rsk8DiDKoy1umyKNRhwRMSRIt9qaXUfx7ordiv0enYBsh90mf2HwMUfs86oGcWS3CRhxYj72HK0yPTctbBoxR5I487vVjC1HNsF/iySr2Iwv/MUtWbeS9CUnvSSjbDVpEYzWwqNVaNAfc2TtXHqCiI+funxgO0W1baM56fZWCykgO+ChEUHrukauE6tiMNpuLv7s8b6W68WyRRLFZznAT85EC3BPREgcEUFzsKwGZTX1QVuOLpq9XLW/3qtujwH4MrqkLwBePCnFkU84SHNK02nKahabIKisGZIo8pjMVrMr5u7blp2aJO9nY4b47zgtK0C1W5nmz4+J1Bclq1ska5ccc2TVcqRw0dkU2wXBf58CnVdpOQq/Wy2eGs8azURpdQg8ZyHK7sLEiznSfhzZa+p/D/CoY44iMKEmDokjImhOfex7AMBtI7rK27xe0fDLWSvmiEWvzpHDbpNFAG85qtcQR9IXjaVMMg0EQf1FLi3cUvxQILeaTfD/DpSEXTOmiKUi5oi7d0ZuNel+8NnvERNHGm41OXA8TJYjwBeU7fYELi7p26+9oFhNbdcbE7tUfi23mv54RcxRCGIwUqjdQFG9vGWstmMJB3qfXy0SzU2ZiJA4IkJm28EK+bFXFGGDtoUH8IsjqT0GT71X1CzfnGT3x/7wliVWLF3/9hrfg4bvCt6qM+eK/vhmUzG65KbjaJUb76/ag2qNnmoSfNsM9vpmA7JtAmM5atiWxViOHBoB2XrPAbbvmiDPUTlnw+kEDXsdSdyYtfDwGKXvO5i6VYEsDHq/8NnDgimKqHXOaKKZrWYwGUEhXIM7f0RRiaP4XsyVjXyj71ajgOzYQ+KICApW+LCLj0cU5Q+VVmD1kQZx9DcjqFg8Xu1sNYfNbznid9dpVN2WZuTiLEeje+ZjDNNzbP7qvZrzAPxfOPwvR68oKgLJkwNYjuw2QZ6QV7Yc+cWRh0lh47/ktBZ2qVil9AXJz8+MGAgGu4G1x6qbxOhcDitWEBNxRsGktls5NhJo1znSn0u43IiRItoB4KGijDmKzjWVgizA2AQTm4lIo6lzREQXNyNI2MWMTVXXEjmlVT5xtE1HHNXrFIFMcvhL5hsFZEtIY5MdfDyL+S9p6QtH7VZTuv4CWY4Ewf9lJr20VKf/d4mU0q91LS0rAJ/Jps5Wi7w4cnDpNNbdamydI31xF8gKop+hZtGtprc9nixHJj6r/GM9ov26Ei2AODZ1jtjPrPE11d9j8X0/ExESR0RQuJkWFuxixgobrWpFUsHHvw/pWI482jFHSTabP31c1I85kpC+aFjLkZZFxUxhPXVvNaUgM2M5kqKOtO5JWXUdc83A85Nai0huFnX8geF0gsbIVRWaW83G7dN3M6rmpDM/65YUve2xWXS0Y47052JkidMi2q+Lv1q8r+Wspzdata6sZBwmWgxXIkLiiAiKWh1xxAoXLQuQJCpKGUHAoiV0AF8cir/ZqQnLUcNfNuZIq6mp4ULSsIsf4hWV1i3WcqT1pe/rz+Z7LPdlY+bMWo74RctuEzB30ilol5MqVwiXrHbSFzjvVovUr0j2Ovy9DCUgW2058j8OHHOkvaCEmtoeaHuksZqtFq7XGylUbrU4byAS8wrZAd5E9f/5SMyoaUPiiAgK1nLECgV20deKOZJbb+i0CNESOoDPDcPXAPJdwx/704FpiSEtFi7OrcZj7Kpo+KsqAqksXMleQyut31crqcFyJGW6Ma+hrIa1HKktMsO75+Hne4bj1A45APyWI79bTXm9RIg5shmcS1n3KcB5dOOM/GPM3A/9bLWAh0YEbbeakZWTeWzKchTMrIKHLx0Q75aOWNc5CnR/yI0WeUgcEUHBWo5Ya49SuKiP4/uS8RhZjqQvDL6itn+M/+MsxxwxbjUty5FxkKug+Cvh9SotZKwgcmoEyUi1ewC/kGQFJdsYl5+OVlsIKQBd0JlfpBYe9jp8hpnVa7LDjWKOAgdkMw91Y47MiCPtMXFV58hgKnad165HtF9X4sUcaT+O1jUDWky5rxmdjktECJA4IoKCtRwpeqN5Rfyw5QDGPPszNu8vVR0ndaLXKvToO16deQb4/vPLbjVRxOGKWpzzwi94c9lOeQxbL0jLrWa1X5WgM8Yrigpxx8Y1OTWCswX4A8Gll61V5kBrjkqh4PsrxW356xxFZ+ExSm8O5Zr8/LVes+6cdBYxK5k/RmNiZjmyGB+nSOWPQ+HBzygOp6ggFm41K73V4t0t2RigVH4iKGrr/bWB2FR6URRx9TxfzzCpdxiLpH2sWo5EiIxbTcSsRVuxaV8ZNu0rk8c4FZWmG9xqjHDREmRGC4me5Wjesp24cVhn+TkrwJJ0GqdKW/2WI/++h87ryVxTew7sXOvqucazKheX5hRCxjjmKPiL8plvrDgKmLXDLBKKxxYXt/iLOdLYZvBT1qpbLdokXIXsmNQ50n5MxAYSR0RQsJYjdz1jOWIEyHGNoGvJcqQVrA3oxxyJov9LyuMVNSttJ2m51RjhUu9Rn9u4X5XvL//l+Om6fViy7bA8xhkgrsl3jobX0fBcev0X9muNiYM6MOP0rSjSXKV7qNc+JFIxR8o4IeVKHcr6obIcWRA2ehaicKW2x1NAtpnMSt/jiEwpJOJcC6mw3Lg4DMTCWkXoQ241IijYmCPWcuQJEJDtFRuCqHV85FoCRjqOdatV16ndb8ru9kLDNkYcabjsDH+N69QRAoBD5bW+fYKAJIOaPYDP6iV/2Ta8PElE5jBtRADj3mrSS3FLAdk64i1ibjXmvLyFLDTLUShuNWasznGmeo3pxRzF6BtSa8pGQt5qKn+0SbS13mopiPBck/0hFJVLEgaQOCKCwq0jjswEBnq8oq5bza1R7dp3Xn/PNq8XqHErW36wzV0B7bRnLauUYRyHPEZ3CGw2QSHKAlmOJIuRdJ8CxQtpmff5IpC8wIuGW01VW8niNwn7Thj1k7PiIhJ0FrRETOXXEkJGM2GHx6PLKtEsIUrRHZ1rKt5DiimKOSSOiKDQiznSc4uxeLhUeBZWdLGIot9S4hFFVT80NiMM0BYIWvFMpmKODFZXu6C8Lh8/w8wIAONWa5gLv5AZBmRz2Wp67UOiEZAdzpgjHqUrMcCcdDPUrM1Nb0TsUvmDd6vFY0B2IoujmKTyB1iZRc1yskQ4IXFEBAXrVnN7tGOO9PDotAjxnVe7CaxXZAKyvaLcfFUiibccaXyhaV3S6HtPL1Weha1+DahT3Pnr8AHZ/OLLX0pr8VfXOdKP2QknigU4xDpHRljpraZIf1Zst+ai0M9Wi82irl3nyNz4OPSqxeWcjLAqrsNBLFx5hD4kjoigUMQc1Suz1QJhLI60LUdexq2mZzliMfvVYqawXqBFyUzBQTkgWy4CKWpe3yitXdJddVxAtrp9SGS+WJW91fhrWjuX0cdEL3ZIC72sNKvBrXpjYrVGadc5MvisBumKjBbx6OozIhYB7rEIAif0IXFEBIVezJFOyJACj1ffrVarEWgN+NxRkkXEKwI13DiH3WbZWgAEiDkSAo/hm9lqiSNR9McQiHLMkSSOjOejlbklW4503GqRCiJWWo74xrNxYDnSsZ6YsqTFmeVI67LGIj2+3WqJRiysOFbixigmKfKQOCKCwky2mh4er362ml5ANkS/H97rFVEbKObI5JeH0a9svTpHyuvakJ2aJD/XylbzXcf315/K3zBPVbyQ/vz4mCM9t1oiWI7MXiewxUFbSCl+hZv4lou3gGzrMUfMY/pWD5nY9FaL/jUJfajOEREUSsuRcbNZHo9X1HW/6cUcifB/YXi8arcaH3NkdrE282vcKDXabgNapLvw4j/7Itlhx39/2a45d7/lyLdNz61mZIWSK2R7lMcaWZvCiZH7MJxuk2ArZOtZjszMLd4qZGv2ATQsAkkLaziJTZ0j7cdmoPDs8EO/MZooXq+Ih77cjC827A/qeFbEsNYeM+KoPgi3mlcUFXWO+Mwzu11pKzK7WIdSIBDwC5FzerfCyB75Ac8RKCDbyB1kV1mOlNvNzDcUjAKyrX+Z639OrLnVAscZmZmbnqUxVrEyWpc1sobaLNwzIjBW62SF55r0HsYTJI6aKIt+L8HcpTtx6//WBXW8XsyRCa+aYcyRnlvNK4pMzJH6WIfNFtRCZlzDyPfXyHJk9otTr7eaUTC1un4RF3MkBWSrBFbk3WqRdOVZETZ61iLLAdlx9k2oHZBtNN7/OB6LQCYasQ7IJm0Ue+LsK4GIFkcr1a09rKCXrWY25ogXOFJ/Mt2AbNH/5aGln/iYI7OLXegxR+asNnwRSOmvUeq+ynLU8NzN1TkyKqIYTiJVIZvHodEjz8yc9BYXc9bB+FqNQmsfEl+vJRGx6pYN9zXpPYw9JI6aKHqBw2YJKeZIFFUWJkkc6VfI9ruRtC1HAlfzJnS3ml8c6R9vNr6HH+V3q+mLK7VVibu2FJAdIKg7XBi5bsL5XW5lodcTQZZ7q1mYXzTQrnNkVhxFYkZNC6uNi8MBCdz4gsRRE0WvWKFZdGOOzGarceNcSXZ5nxYiE3OkNcZhF7iu7AGnAcB4IRHkMaG51UTR31uNtxwZucRUrisdV1Ykg6NZ2I8M//mx+mV+2YC2AIAhXVqo9iljjozPo2st0mlIq0e8LUZa76HpVH5SRyETC7EZ74U8mxqUrdZECfULVK/NR7AVspOTjHX6oC4t5AWDr44N+FLq2QWRfXU2QT8WKtQ6R2YtcNIp/DFH2udmX0OgtiD+3mrR+SJnr6Ouc2TtXJ1y07HhwVHIcKm/gthzW6lzpBtzZGJy8bYYac3HsAhkDNxAjZnY1Dky704mIg9ZjpooSUy3ejNVrXl0K1kHWQTS5bDrjh/eLRcPnttDFgvlNfWqMQ6b0nLEfqHp9zsz56owDMjm3Ut6WU+QLEdo+Bu4t1qgWCLpqT1KVgPlPQ3NcgQAWSlJmsLFzlp9Arwedq9e+rWZqcXbYqQdc2Qw3iBYnrAOez+j9dEQLHxmqbda5CFx1ERhv0C1GrIGQs9yZLbOkVoc6X8UbxjaGRnJSfKcK2rV4ogPyGZXTeNsM/15SguUYSq/Gbca/Aub9KWm31uNWeQCxPX424doHx9ujERYeOscsZYj47H6jWf176MWcaaNND+Xxpaj6LuBGjOCye+PsF5T58cdERtIHDVR2GyjOjM9Pzj0LEdm3Gr1XlHVW8tIHMkiwMBylGRXtvFgv1quGtwBADCie5763CbcauFJ5ff9lYtAerWLQBqlZOtlr9l1Xne4YV9rZCtks+cNYDnSee3h6q0WK6zHHLGP4+u1JCKxDo4OGGsXdykEjQ+KOWqisL/O6+pFwGnteD3LkdnGs7yIMnKrSV8U0t/yGnUZArvNprtATD3rBAzu0gL92jXTOLeROBICjuHj2vVT+X07RD4g20KdI72Yo2j9sjUSbuHtreZ/4YFOayYI21xAtsnJRQkta5dZyxG51UIn1sHRVi2xQURGEAEgcdREYb98dfuZGaDX5sNs41k+q81pYDmSviikL32tgGxfzBF7jP9xkt2GwRpZUYC5X+OhutXYc6jbh+jPRxWQrSNI2O2R/I40LAIZRhu0lV/tZgo/mlloEj7miCxHYcXq5yf814/6JQkOcqs1UdiAvrC61Uw3nlWOM8r64kVAjUahSLtN2Vst2DpHAzvm+M8hudVM/mLXhSlg6Q/I1j5e2TDV2HXlr5DN7IigOjKyToRzAWHLBAR0q0F7ERMsioV40xOW6xwphGskZtS0iEWdIxYSuLGH/hs1UVhtEow40i/WaLYIJNcbzVAcKf/WaFitVDFHJr9b2GOmn9MD084+kbmuCbeaWctRw19JlIomLEeBGspqFYGMZBaLskJ2aKn8RlhqPKvrSrMmFuJtMdKOOTIn0uPNCpaI2BWfpehc06qgJyILiaMmCruEshWuzaJnITJX58irSvk3ky4viYBqt3adI2UqrLkvF3bhzElzataLMQq6tupW4y1HRqn85t1qpqYQMkaB0uH8MrdbWOiVAdkhuNWsTDAKaNc5MjfebNV2Qp9YN/KltzD2kDhqorCWm2AsR3op++bcaupxRgJE+qKQxmi59NTtQ8yhXES1U6KN9I/5VH5l0JE/5khfZBgFa/uu3fCXtRxF0K3Gioxw1DnSw4rliN1tpiCkHvH2S13r/4PRFGPtBmpsxLoJLL2HsYfEUVMlRLeaXrFHM4uzx+tVWZjMxPVIY7QrZAfbPkQZR6OwPjHb9bDaW0161fp1jphzq7LV+OdCwPmFE/YqZhvuBoPdwq92/caz5gWW2THRxGrMkeKe0bd6yBhlZkb7+kRsoGy1JkqoliNdt5pJyxEfm2TGrRbIchSMz14hRgSBsxwJAc/F/8LXG8r3VhNNWI70Yoz456wQiFZGb6i91YywstDrW4v8j01NLc5+qVuPOfI/plT+0Il9nSN6D2MN/cZoorDaxF0fRMyRnlvNVBFIr0pEmYmnMOxxZheAICxH7EIi6Igjo3OZthwpvWpM+xDlOMUCHyAjLOqLIHO5SBaBdHDvieGUdK1FzHYTTtZ40xPWU/nJrRZOLIvrMBPomtQ+JPKQOGoi7DpSiXdW7JKLN4Ycc6RjITKTreYV1e1DzBRjNMo68ll9mGMCzkJ9XTsftyT4z617XTMxR6IoX0cOyPaqr6+ajypbTX/u7LWigbrxbIQsRwHFETuH4OcTb4JCOyA78P8R37Hx9VoSkVi38qCMw9hDbrUmwrCnfoIoAser3Lj5zK5ctlo4A7IDH1vvEcFrK+OYI+mvkUixwSP6Y5HMfrnwMT5agZhGweKm24c0/PX3VtN2qxnWOdJxq7FEza0WwTpH1gKydaxFFn/2xdtSFFoRyAhMqKkRgtCOBmprKFmSwg1ZjpoIkpZZsu1ww/PIxByZbTzLjzPTANZYHKkzz8zAB/RqWR+stA/Rg3erSX8tVchWWZKi+6WtECIRdKtZC8j2Pw4m5kweH2eKQlsc6c+R/e9EMUfhhW5n04TEURNDcqspYo6CqHOkF3dtShxpuNVEUf9L3UxWlo1vHxJwFj4UneZ1A7INjjeRGsSm8vO91QzrHAVIl9da0CObyu9/HK1U/kCn1atHY1U4xptxQOtjZVrw02oeVsjF1TQhcdTEkCpbs2tofdSz1dSWI1HUX9DMuLfsAl8h29wXGrsIqVqQCP7tutfl/ged36c1AKBjizTlDs5ypNtbjS20qHKjGV87mkQyINuuIVD1UAhiHSuSmY9CvHU5t2o5CmYcYQ7Smk0TijlqYoQrIFsvK82ENvL1VuMtRxB9wkCjn60kEoy+pNSp/IHnAahjjJSLqqAaw8MLp4v7t0HbnFT0aJWJPg8tYubjGxeot5rS+qE/V61jo0kke6tZC8jWHms9INvS8IhjtUI2C1XIDi8kNpsmJI6aGOFyq+llRellsbH4LEf8+QCHzQZALdSkhcIwaJu3+phuPOt/bBcEzk2jHqM+Xu3qKuzcXDVOGqUKyFYVetR3qwWqexRplFaayAk1ZePZAHPSjTmyds14WwCt1jli/zvF2UtJTCiGq8lDbrUmhqblSKOoYiBC6a2m1cvNF5ejPZ4vAqmFXeDkUBC/su1c3BJfmVvzeJNfnP6YI99z/fYh6mPk5wZCKhoYiY9wrh9W+qLp3S/2sZk4rHgTFKG41WgxDy/x9tkgogOJoyaGVnVpq241UVRbfiTMBGRrXa9Xq0zdL3U59ieQ5chCCrj/3MqFWGl98p9b97omvjlFkc1Wa7Ac6dQ5EjixZnStWFo7zASHB4uDUYGBTqsniKzemngLutVuH2L22Ph6LYkO3c+mCYmjJkY4Yo6MPGdm3GpuRqB9eH0h/j3uRFxxWntdcSSJIqPEMIcqW8168Kq6CKSgGqOam4kVKznJxrQPQcPfcDSejd2XNn9Lwrl+sIHmwQdkWxNK8WZs0XrdRgKOdXPH22tJdEgcNU1IHDUxaj3WYo7c9V78+7ONKPr9gLzNKCPNTEA2K8Z6tsrEtad3gsNuC5jKH0ikBNNJm12I+Yw3MzFHRgLl+Ql90b55Kp77R19VzFEwdY7UvdX05xUJjKoGhzeV38Y8DiCONN6vYIi3BVBrOmanGG9WsEQnHsUmtQ+JPCSOmhh+y5F/m5Hl6H+rduOdFbsx+a3V8jYj15mZVH43cz128dNzm5mqcyQIusG5RvCuGK2igkbnMprTeX1aYfHdw3Fiy0z5HLzlSBXYzN6PAOnysYw54i8dud5qxmOtxCcZEW96QutzFW8CrqmQCGIzSl2DmhQkjpooosmA7P3Hq1XbjMSRmZgj1q1m5EaSkFpBBLIcBdNbi4/xsboAmU2b1g/I5uejPkbveUzdajCeWyjoFXbUnEcQ77n2eeJrAbTaPoRoWsRbXa7GCImjJoqiCKQZXxiDsVvNWkA2+4XPFxb0jzHpVgviC0PhxgpCHFntrQberWYQV8S7zWLfPoSdC7cvnKn8wbYPCeGa8SY8tN1qcTZJgmjEkDhqorCWI7fVgGyD4WZOxVqOFAX/dMWReiyPXjB1IPgmp1oNS41El2nLUcN1pHunWyGbE2t6c2XPGQuMShCE89yB6xyZF1KG54mzX+JWLUfkVgkvFNNDkDhqorBfplbrHBnVMjJnOZLibTi3VsCYI/1z2n0nY44JOI2GOSgXV6v1cawGRfuLQKqvL81B67FvLH/tGLrVIhj/xBaBDCRyg4kz0yLeLEeh1DkiCCJ0SBw1UcwGZLNIPdgMY44sBGSbrfjsD4w2CMjmLUcBZ9FwHBezYrVtg1nrjbp9iHYqv1Gdo0B1jyKOQfBzWHurWahXFUrLEL3zxAOhtA8hCCJ0SBw1UVizsVbFai1qpEw3AwFkrkK27zxmA4zNVKp2cDFHphvPRikgWxom3R4zqfzxFpDNXy0YN6YZgm08a1QHKyBxJjystg8hCCK8kDhqIjg5/w+rb4xijlgrUbXb1xVWEkBaAdT1BkJL+m6XYo74xSygODJK5Q/ScsTHPFldf8y3D/H9lStkmygCGchSFOsGo+Gy2vBYaTwbTD+9QOeJB6xajihGJvGJr08gQeKoieB0cG+1yQrZbLuRmroGcdSgrLSEgVHmW1KDGqqz6FaTNhvWG1LVObJm0ZGuo4g5MnG8WXEkLdzSOf11jpTjjAKyVVamGP/v5e9duGBfd6C30cwczHwWKOaIIAiWhBFHjz76KAYNGoTU1FRkZ2drjtm9ezfGjRuH1NRU5OXl4e6770Z9fb1izE8//YR+/frB5XKhS5cumDdvXuQnHwew4sjrFU3HHEnWIsAvjqSMK7tNUC3g9QbnSmoItJUqcvPxOnqWEGlxM24Aa71lBMBZagTrtgfT4khlOVJf3zdO32oSKAYp0vD3NFyZYjwOzppnPCfrrlTt8wR9aEQgcUQQsSVhxJHb7cYll1yCG2+8UXO/x+PBuHHj4Ha7sWzZMrz55puYN28epk+fLo/ZsWMHxo0bh+HDh2P9+vW4/fbbce211+Lbb7+N1suIGaxbrbbeyxWB1LeRVNd5VI9ZlxC/dhnVQHI0zEHKjrPavJQXA+zhdptNaTkyPBNzTdbyoBNzZBgIbtpC5RvnlWOOzLjVjOcR/TpH+pascE7FSgNhZYxWCNeMM+GhZRWkVP7oEW+lHXjIjRp5HLGegFkeeughANC19CxatAi///47vvvuO+Tn5+Pkk0/GI488gnvvvRczZsyA0+nEnDlz0LFjR8yaNQsAcOKJJ2LJkiV45plnMHr06Gi9FEvU1HmQnGQP+Tys5ai23qP4r2UUc1RTx1qOvKh2e+SYI78bihFaRm412XLU4Fbjvu31ikBK8OIp2WGXBZvdFnoMDN+CxMyCk2Q3KY6kczb8lURkKL3VYlnnCIhczJGVIpDs3tAsR/G1GFoV6UR4STTxkVizTQwSxnIUiOXLl+Okk05Cfn6+vG306NEoKyvD5s2b5TEjR45UHDd69GgsX75c97y1tbUoKytT/IsWL3z/F/o8tAjf/3Eg8OAAsAtrTZ1X4VYz+o9VU+cXTm8s2YETpy/Ex2v2yufkF2yjmkkOLubIavYVPz45yabYp1woDU8lwwogvvGsGVqku0yNk16al3erGQRdq/cpzxltyxEftxbM/TaDlZgjK1YmI9hDXXx8XgywKjYdIXQh5pM1CGXz43gkNUlp10iOg89sY6PR3NGSkhKFMAIgPy8pKTEcU1ZWhupqdQ8xAJg5cyaysrLkf23bto3A7LV59eftqK334po3V6Oitj7wAQawWWc1dR6FW000MJGwbrWFm3338eWf/gagnfpuGJDt8I2VBFSg9hg8vBhwOfwWNX4uwSzWZr4POzRPVTwvyEo2dW5ZdAWsc+R/zL/eWKfyX3FaO3QvyMCtI7qq5hPOuVjJVjMT92RmZuyxT196Mjo0T8XTl/YxcWRksHo7/3FKW3QvyMCU4Z1NHzN30ilol5OKdycPtDi7xs85vVvipNZZuHZIx1hPRZPnJvg+o2efVID2zVPxypUDYj2lRkdM3Wr33Xcf/t//+3+GY/744w907949SjNSM23aNNxxxx3y87KysqgJpB6tMrFyx1EAwJpdxzD0hFzVmJo6D/4oLkOfNtmGbhZW//hijrT38bAB2TxaMUf1Br1FpGw1t47lKLBbTfmctRzZuTT84PqsaQsVdutPdw/HNfN+xfdbDgIACjLNiSPecqRf58jIchRbt1pGchIW3n6G/JydTlIYrQ/B1jnSG3pKh5yA12RvZbeCdPx09/CAx0QSqxbMNJdD8d6YYXj3PAzvnmfpmKZCcpIdX94yJKrXHNYtD68t2aHOLNage0FmzD+jjZ2YiqM777wTkyZNMhzTqVMnU+cqKCjAqlWrFNsOHDgg75P+StvYMZmZmUhJSdE8r8vlgstlznUSbhRxQnXaIuWqub9i+fYjePj8nvhXYQfdc6ksR4wzzajidU29sThSZ6sZxRw1iKMgA7L58QrLEecSM+1WYx7zr0XvthyudMuPc9Kc5i7UMCExgOXISm+1WLtD2PsdSNhaO7H5oUZxTyvvH4H9x6txUpuswJdUHEqxPUT0GdK1BT66oRAdWqTFeioEYiyOcnNzkZurtoYEQ2FhIR599FEcPHgQeXm+X0NFRUXIzMxEjx495DFff/214riioiIUFhaGZQ7hhl2c9bLAlm8/AgB4b+VuQ3HEnqumzqOIOTLq+FFjYDnSTOU3shxJbjWPdp2kQDE07Pgku6AQU3YbH3MUuuVIj8PltZavIxeBlHur6dQ5Yl+TgXACAFdSbMUROx+HycB0c+f1n8vI5QsY91bLz0xGvknLntI9Z+oQggg7A0xYOYnokDAxR7t378b69euxe/dueDwerF+/HuvXr0dFRQUAYNSoUejRoweuvPJKbNiwAd9++y3+/e9/Y8qUKbLl54YbbsD27dtxzz33YMuWLXj55Zfx4YcfYurUqbF8abqwFh2jLDAgcBCpInXfI3JuNXMxRzw2m1ocGFmO+IBsq3V72EUzOcmukYbvf252fWNfun4RQeXzQxW12gMNkKSbv7eadE3elWfgVoszy5FNYTkK31ysFOI0arcS7DXjJa2/RbpJqyRBEGEnYcTR9OnT0bdvXzz44IOoqKhA37590bdvX6xevRoAYLfb8dVXX8Fut6OwsBBXXHEF/vWvf+Hhhx+Wz9GxY0csWLAARUVF6NOnD2bNmoXXXnstbtP4WXFkVFwR0KiAzcEuMh5RVJzb6Mc5m63GYxcElXXDSMRJi7kUtM2vQYHEEbu/WapT8dxhE0L+9W82qNhtkJGnh78IpPTXhFvNIB4JiL04UrjVwmg5YmPJApWxCMaVqkWkajaFwrL7RuD/XXRSrKdBEE2ShKlzNG/evIDVrNu3b69ym/EMGzYM69atC+PMIgerM4yywIDA4ogVQ3zjWL2YI1EUA1iOrFXI5hdQs+1D5Osxu7NTk1SZSqE2QlUf0yDidMabrXEEMG41VYVsfpzSVcjC3i/erRgLIhWQnep0YM4V/SGKItJdxl9R7B0IxeLDHhovliOnw4YUZ8J8RRNEoyJhLEdNEVFhOQogjgIsTnz8EiuQ9M5cG8BCwhdNBAK41bg5BmqsqnU9iayUJHXwMmtFMDyTn2CKvb32rwFol5OK/00+zfQx+r3V9C1H/D72aaytRgAXcxRmoTamVwHGntQy4LhwtTAJlwUq3MTRVAiiSUE/S+KQeo8Xv+0rVbhvjAKdATOWI/9jj6iUBHqWI6M0fqDBrWYlIDuAGAq0wPJuNXZ+di7mKJyrCi9SRvbIx8ge+Tqj9c7h++sVRYiiaCqV3ygmyxWGqumhYlNYsmIv1kJ5y5U1skiSEERTh8RRHPLEt1vx6s/bFdvqAlmOHIEWS6VbTaGHdE5tlMYPNLjVrBSB5BZQPobXSip/dmoSSkpr5Oe+bLXwBtWGs1+VtOCKIh8Eri8YjYpAxoPliJ1dtAtSahGS5UhxntDnEi4yU5JiPQWCaJKQOIpDeGEEAJ4AlqNA8S+85UgRgxSs5cimdkEYu9UCxRwZXk4hprJTnapq0qFmq0USaW7Hq+sw/uWlzHY+I419rL/PTKG4SCMoLEexVxRCCLckHrPVAOCMri1wxWntcGLLzFhPhSCaFCSOEoSAlqOAMUf+4z1e3q2mfYxRphpg3a3Gz5Ff/AOlg7NiKislSXFtVYXssLrVwneODXuOK7cbtFAxaq8SD+KIfbvCmcpvBfZzHVoqv/9x/EgjnwD9v/GUsUYQ0Sb237CEKQIGZFuIOZLiXiT0gpJrA7jVBEHdW81IUAWyHAXsrcasYJnJDlWrjXAF5/J0DEPFWr12JoZ1jnjLWqQqUgeJos5RPFiOwnQwxRwRBEGWowRByyLDChxrliOlO0nP2BMoW02rQnZpdZ3ueFXMkUW3GrtoZaYkKSw6DlWFbONzWWFIlxZ49IJe6JafEfQ59OajDsj2PzbK5ou3AOh4mE9oMUesKA3HbAiCSGRi/41GyJRW1WH655s092kFOruZmkJWikB6vaJhPzWJgOJIw3JkRKCAbHsgtxqzamUkO1Td25VzMTevQO0pAJ8ou3xg+5BK++tZIywFZLNuLM5S8+61A9EuJxXvXRu9DusR660WJKEIYoEsRwRBMJDlKI647NXl2FJSrrlPq7giK14kcbTnaBUAoG1OqmKsyAVkm0nlD1QJ2maz1hmeX0DVqerGx7NiITNZmcUTyZijcKB3m4wqZKsCslnLESckB3dpgZ/vGR7aJC3C9vvja1jFglAsR2bayBAE0XQgcRQn/LT1oK4wArQDsmuZ+J4kuw01dR6c/sSPAIC/Hh2rsNTwAdlmstWkmCO7TdBsfGu3CaoWF0YkOQK41QIVgWQOb57uVCxovBUr3hY4/ZgjbpyB5YgPQI81CnEUo/mwn8pwTYEsRwRBkDiKE9o3Nw761Yo5YgOmRVHEgTJ/3Z86j1chjviAbHZV0fMsSeIr3eXQjCVSu7KMCVQEMpBbzeWw446zTkC9x4uWWSmKhdFu5yxHpt1qBvtMncEc5i1H+gJIEWMVBwHQrKiOh/mEImri2epIEET0ib0tnADgy4iaf0Oh7n4tyw3rVhNFoMrtUTwHgONVbry1fKeiR5rZVH7p/Hr9rWyCtf5efMyRVbcaANw6oivuGNUNgNIaZheU2WrxtsDpzYffbuRWU/ZWi/1/XfYzybv5ogV7h0KxHBkV5iQIoulBlqM4wmUQVB3IrSYCqHLXK54DwM3vrcOSbYcVx/G91fRsJJJlKiNZ+2Ni5ypkJ9kFw3pMfFyKugBiCHVqbME1IY1SDUhdq4a6t5pBQHacBUCzlqNYNcFl379wucNif2cbJz1aZuL34jIUdmoe66kQREBIHMURRtYA7YBspaWItRxJCxcvjKSx4bMc+Z/nZSRj3/FqvZegqqLMv9xAMUc8RjFHZjG652Yy2cxidmaK7vAG7VXiwY1l1Com0VDcd7IcRYR5V52CT9btwyX928R6KgQRkNjb5gkZo3R8zVR+1q0GUelWM0g0M9s+RI450rUcKReS3AyX/kVhps6RRXHESLxgs9WuOK0duhdk4NYzu1i6tlXMWjWMLEcssapIzaLl6k1U2P8CpI0iQ15mMm4Y2hnN042/JwgiHiDLURxhVMhRq0I2G3PkFZW90PSqXgMNMUdmArIbLFNGliNW0LRId+peE1BbO1QxNVbFkWJBU/ZWM/vrPyM5CQtvP8PSdYPB7EszCshmiQu3WiMSRywkjgiCiP3PT0LGKOZIO1uN2SaKnFtN/zper7J9iH4qv+/8ejFHNi7mKDnJrn9RaARkh2g5UiNoPIoPzC64RgHZLPHgVvNEq2tvFCC3GkEQLCSO4ggjt5pmQDYbcwRlQLZRBWy+CKSekckdIOaIzxBzOQKJo0BFIIO3HAFc89A4W9/MutWM6hyxxEPRRYMew9EjTPqMstUIgmCJ/TcsIWMkjjRT+esCp/JrwbcPCVQEMt2VpLnf11vN/9yVZPxx4i1H/BpkNSCbn7cylT++FjizszHqrcbC14yKBY3JcsQS+ztLEESsCUocVVdXo6qqSn6+a9cuPPvss1i0aFHYJtYUMYo5qgvQPkSEiMpaJpU/kOVIURRSe5x0/jSXtkWIjzkycgsC6iBide+w0JaleLYcmbVGsPfA6JhABTOjQWMKyKYikARBsAT1DXv++efjrbfeAgAcP34cAwcOxKxZs3D++edj9uzZYZ1gU8Jht+kG7mplq/Gp/BW1rFtN/zoer9IboRe8LVmmXDqxRDZBaaEJFHPkdBi70dggYzMLFD/rYCpkR4tgYo4MLUdxEHPUWIk3qyNBENEnKHG0du1anH766QCAjz76CPn5+di1axfeeustPP/882GdYFNDr+6OVp0jZSo/51YzCMbwinxAtvY4SXzpWYT4IpCWLUcGMUemXGzcvMNdITu87UOCiDkyuJ3xEJBNEATRWAlKHFVVVSEjIwMAsGjRIlx44YWw2Ww47bTTsGvXrrBOsKmhF3ekbTlSxhyZtxwp3Wp6KkA6v57osdmUbrVAliO7TZlub1T3yIyLjReA4WolEQnMxxyZc6vFQ50jgiCIxkpQ37BdunTBZ599hj179uDbb7/FqFGjAAAHDx5EZmZmWCfY1NATItp1jpSWIjbmyKgGjcd0QLYkjrRFD1+VOpDlSIDSOsTX6rEr4m0MTwVAK1uNTeVPTHVk1q0WD3WO4gEjCylBEESwBCWOpk+fjrvuugsdOnTAwIEDUVjoa5i6aNEi9O3bN6wTbGroLYh1XN70pn2leOnHv/0bRCjEkRFeVUC2cbaaXhYabwkKZDkSuADuJE5Msa/cjFvNMOYoHG61MK67pgOyzVqO4iCVnyAIorESVIXsiy++GEOGDEFxcTH69Okjbx8xYgQuuOCCsE2uKaJn8eAtRws3lSieiwAqmZgjt8eLd1Zouzh9liPlsVrIAdk6FiFBgKVsNZvAdZY3sH6Ycqtx6kVpOYovzM5HMGk5ooDs8NKrdRYAIC9ACxyCIJoGQbcPKSgoQEFBgWLbqaeeGvKEmjp6xgI+bfpwRa3iuderdKvNXboD76zYrXkurygq3BH67UNMuNUsxBzxMUpG1g8zlhaV5Yh9HGcZR2bLFJhtH9IlLz3kORF+0l0ObH5otGEjYoIgmg5BiaPKyko8/vjj+P7773Hw4EF4OZfP9u3bwzK5pojecsjXOTpU7hNHWSlJKK2ugwhlQPYvfx3WvYYqIBs+KwwvKNwBArJ5t5oZyxEriIwyrszE1PCvIdzZakZFOa0SroDsj28sxO/F5Rh6Qm6YZpbYhLPeU5pOJXiCIJoeQX0bXHvttVi8eDGuvPJKtGzZMu5+pScyeveSz1Y71GA5ys1w+cSRqBRQbPVsHo9X7ZLyigCvVQKl8vO91QK1DxG4AO4kg4UtmIKQ4apz9OgFvfD6Lzsw/ZweQZ+Dx+z/EdZwoWU56t8+B/3b54RrWgnPOb1b4s1lO3FaJ7onBEGEj6DE0TfffIMFCxZg8ODB4Z4PoQNvOTrcYDnKy3Bh28EKiBAVva7YTDYeL99brWGbnRMUrFvNJqjLA6jdaoEsR4LCImRkOTKVraZxfivH63H5wPa4fGD74E+ggdnfD2Z7qxE+kpPs+PKWIbGeBkEQjYygbNLNmjVDTg79UosEZmKORFHE4Qo3AH8AqSgqs87YGkha5+KFjlbckSyOkmyalg+bAC6VP0DMERfAbdRrzYzlh7d+xXMLiKCy1Sj8hSAIIiYE9fX7yCOPYPr06Yr+akR40FtD2Wy1sup6uBssSXmZyfJ2j1lxxFXIBtTp/PUeryzIXA6bplThA6yTHMYCQAA3PswZV8reavGljszHHPkfGwVkEwRBEJEjKLfarFmz8PfffyM/Px8dOnRAUpKya/vatWvDMrmmiJ7FxO3x4tvNJRjdswCHKmoAAJnJDjkeSORqFxk1BfV6RU1Lxt5jVfjlr8O4oG9rxfE+t5oA3pHFF4EMZB3hU/+NqjybKe6ntnbFr5gw31vN/P0kCIIgIkNQ4mj8+PFhngYhYbQeXv/2Gvz6wEgcbIg3apHhkuWAx0LFQo9XhMB5wLyiiKe+3YrP1u/Hlxv244UJ/mKeTodNc14+yxEz9wDXtQl8Kn9oiz8voFhDS7wJC/O91fyPyXJEEAQRGyyLo/r6egiCgKuvvhpt2rSJxJyaNIGWw5o6jxxv1CLdJa+mRpYiHq8owusVuG1A0e8HAADL/j6C1buOAQAyXA7YbYKmOPKl8rPp88azt9m4IpCqmjL+fSkBaiYBkU/ljwWKOkcJ8iJIxBEE0diwHHPkcDjw5JNPor7eXKsKwhpmYmWqGuoZZSY7/JYjC+LI4xVVVhdRFNGvfTP5+drdPnGUneZzmWq5+/iA7EBTV1mOVIuqf04v/rMf2jdPxUv/7Kd7PnVvNf/jeFuugwvIjrdXoU2iiDiCIAizBOVWO/PMM7F48WJ06NAhzNMhAi0zHq8op/Un2f3uLq3GtLrnENVp+V6uTtLhcp91KjvFCUA7NZ4XOwFjjqB0pfG91Xq0zJIf92qdhcV3Dzc8n7pCdvzG65idTkayA8lJNmSlJAUeHCfE2a0mCIIImaDE0dixY3Hfffdh48aN6N+/P9LS0hT7zzvvvLBMjlBT7/WirkEIOew2WRDwRSKN4IO3fRuV1iepPUl2aoPlSGMF5Ctkm1kjjYpAtmueii9vHoKcdKeJM6lpDKn8aS4HPr1pMFKdgd2K8YKZauYEQRCJRFDi6KabbgIAPP3006p9giDA49EvQEgYE2gNrVdYjvyxQFYDsrVS+esY65PUniQ71SdUtKZltymLQJoRAIGKQJ7UJku1TQ+jOkfxhpW5ndgyM3ITiQCJ4v4jCIIwS1DiiO+lRoSPQDFH9R5RthIl2fz1hzxW3Gpe7QrZrOVIak+SnSJZjtTnsQnK9iFmBIAtjHWO1DFH5oPDo018zSa8UEA2QRCNDarBG2eYiTmSGsImOYKzHHk1ikCK4GKOOLealnWAjzkyo0ccJuscmUHqpyU1iA1X+5BIEG9iLRzkZ/qqs5/RlZrgEgTRuAjKcvTwww8b7p8+fXpQkyGA1ACdweu9IuobLHcOm7+th9VsNXVAtsi1KPH9ldxqaU4HjlfVKY6x2/j0+cACwKh9iFXuGdMdrZulYFSPgobr+/fFmxRphNoIH984CAt+K8aEge1iPRWCIIiwEpQ4+vTTTxXP6+rqsGPHDjgcDnTu3JnEUQg8dXFvnPXMz7r76z3+gGwnk+1lSRyJ6kwviNpB3ZJbbc4V/XHui0sU+3xuNfZ54GuHs31ImsuB687orHn9eLPUsFate8d0x/w1e3BFmJvbRps2zVJx/dDOgQcSBEEkGEGJo3Xr1qm2lZWVYdKkSbjgggtCnlRTpmt+BoqmniELJJugTLtnU/kdTBFGS0UgNQOylW41CcmtdlKbLLwwoS9u+Z//vbdzvdUCNYsVBGVNHEeIliONK8iP4s6txjxu3SwFP9w5LFZTIQiCIAIQttUpMzMTDz30EP7zn/+E65RNFkEROyNg+bQz5ef1OnWOLBeBDOBWk5Dcar55Kff5KmdbEyTGRSBDQ3G6OLYcUeo7QRBEfBPWn+6lpaUoLS0N5ymbJHyPsJZZKejdkOLu8YpywcckuxBUhWyvKMKrGZCtJY78xQh5y5DABWSbCfQJZ8wRjyL+KaxnDh3qmUYQBJE4BOVWe/755xXPRVFEcXEx3n77bYwdOzYsE2vKaLXkkBbUOo8Xbi3LkeU6R8ptXq8Ij0aJhgwmQJw3xtg4N5mZOke2AHWOQkEZcxTWU4cMO59QY60IgiCIyBKUOHrmmWcUz202G3JzczFx4kRMmzYtLBNrymi15JBcMazlyGG3wdtgMbJSIdujYTkCtFuQsEHf/JJuEwRLGWKZKUmKSPCwW47iun2Ifz72EEsYEARBEJElKHG0Y8eOcM+DYGDXdUknSTWB2Jgjp11AbYPI0bL66OHVKQJZp3EOhTjiBIdNUMdHaTG8Wy4u7NcGeRnJioa34bagxHUqP/OYYo4IgiDim6B+wl599dUoLy9Xba+srMTVV18d8qSaOjYNwSG5oHzZan7LkYS1xrPqXH6vqB235LSz4ojfK6hcWe9fdxra5aTiH6e0lbePODEf5/Zp5bsOo79CLQKpmk0cu9VsCstRnE2OIAiCUBDU6vTmm2+iurpatb26uhpvvfVWyJNq6gSKOVJmq/m2a7nJ9PB61eP53mq+eSgFmNqtxgsSAad1ao6f7xmOESfmq14DP89wW47iun0IxRwRBEEkDJbcamVlZQ0d3UWUl5cjOTlZ3ufxePD1118jLy8v7JNsaiiy1WwaMUdepvFswzhLMUcabjVNq5FDqZ15wSEIgiLOh93NBluzooW9TLgFTFy71RTZahRzRBAEEc9YEkfZ2dm+BVEQcMIJJ6j2C4KAhx56KGyTa6poxfEoYo7qpVR+f7aaN8SAbKlfG4uTC5gOZDliRZBT1+Jkfp5WiWvLEXMXKOaIIAgivrEkjn788UeIoogzzzwTH3/8MXJycuR9TqcT7du3R6tWrcI+yaaGsup0wzY25sjrr5AdjOXIq5HKr1UdW205gvFz5jGbiaZnOQo37PXjTX/YFJajOJscQRAEocCSOBo6dCgAX7Zau3bt4u7XeWOBXTslLSFZGxQVsh3GjWeHdGmB64d2wpWvr1Js94jq9iFaBSBVliOVOOIrZLMFHrV9XPx1w4myCW7ELhMUylT+OJscQRAEoSCo4If27dtjyZIluOKKKzBo0CDs27cPAPD2229jyZIlAY4mAqElOqUFtd7j9VfIttlkIaUljgQBaMa0/5DQijnSdKvxliO+Qjb0Cy/GxHKk0GPxJUD4qucEQRBE/BKUOPr4448xevRopKSkYO3ataitrQXgax/y2GOPhXWCTREtw0ISE3Pkr5DtD/rREkd8kUYJr1cdc2TGrcbrDZtBQHaSTsyRlaw6q8Sz6FAWqIzhRAiCIIiABCWO/u///g9z5szBf//7XyQl+XtvDR48GGvXrg3b5JoqWos8G3PEVsiWRmq1D7EJ2vV1fG415Vi3CXHEz0vgU/kZAcC61djkrAhqozizFXFQzBFBEETCEJQ42rp1K8444wzV9qysLBw/fjzUOTV5tMSRVsyRk+2tphEzZBMETXHk9apFiqblKGC2mqAbBK20HPl3qB164SOeLUfkViMIgkgcghJHBQUF2LZtm2r7kiVL0KlTp5AnpcWjjz6KQYMGITU1FdnZ2ZpjpABh9t/777+vGPPTTz+hX79+cLlc6NKlC+bNmxeR+YaCVhkcNubIXyHb79bSylaz2ZQVrJMYy1EwbjWt7DRlEDRrOdKurB1Jy1F8m478kOWIIAgivglKHE2ePBm33XYbVq5cCUEQsH//frz77ru48847ceONN4Z7jgAAt9uNSy65JOD5586di+LiYvnf+PHj5X07duzAuHHjMHz4cKxfvx633347rr32Wnz77bcRmXOwsJYFKbuLLQKprJANebv6PNpZUlpxP9oB2XbFc1VANhfTpLQcaQuAyMYcRezUIcO+PSSOCIIg4pugGs/ed9998Hq9GDFiBKqqqnDGGWfA5XLh7rvvxrXXXhvuOQKAXFwykKUnOzsbBQUFmvvmzJmDjh07YtasWQCAE088EUuWLMEzzzyD0aNHh3W+oaDpVrP7A7LrPeoK2doxR4Kmq0vU6KPmDiqVn3/OFDpkjmWvFdGYozh2V7H3MtVpNxhJEARBxJqgLEeCIOCBBx7A0aNHsWnTJqxYsQKHDh1CVlYWOnbsGO45WmLKlClo0aIFTj31VLzxxhuKujrLly/HyJEjFeNHjx6N5cuX656vtrYWZWVlin+RRsuwoLQcqStk62Wr6TU85cfXaVqO1Kn7RudXHMs2xY2SOFLWh4qk/846KU475lzRH3Ou6IeM5KTABxAEQRAxw5LlqLa2FjNmzEBRUZFsKRo/fjzmzp2LCy64AHa7HVOnTo3UXAPy8MMP48wzz0RqaioWLVqEm266CRUVFbj11lsBACUlJcjPz1cck5+fj7KyMlRXVyMlJUV1zpkzZ0a9JYpRnaM6j9dfIdsuGNbzEbhstSQdwSKdl4e3HPGXEgT9MB/WrcYKsUi61eKtthHPmF7aFk2CIAgivrAkjqZPn45XXnkFI0eOxLJly3DJJZfgqquuwooVKzBr1ixccsklsNvNuwzuu+8+/L//9/8Mx/zxxx/o3r27qfP95z//kR/37dsXlZWVePLJJ2VxFAzTpk3DHXfcIT8vKytD27Ztgz5fsEiWo9p6r2x9cdpthkHIfJ0j1nJUz4khUwHZ3MX43mosimtFSxzFtzYiCIIgEgRL4mj+/Pl46623cN5552HTpk3o3bs36uvrsWHDhqDiPe68805MmjTJcEwo2W8DBw7EI488gtraWrhcLhQUFODAgQOKMQcOHEBmZqam1QgAXC4XXC5X0HMIF1IMT02dR7HN6K7bbQJsjEhx6AgWwB9zJAh+11egbDVAu8ikbyxjOWKEV9ucVKzdfdxg1sFD4oggCIIIB5bE0d69e9G/f38AQK9eveByuTB16tSgA2Fzc3ORm5sb1LFmWL9+PZo1ayaLm8LCQnz99deKMUVFRSgsLIzYHEKF763GiqMku2B4731uNf9zw5ijBgGTkmRHldt3DSdnBeTji/hsOD1YIfafc3rAKwITTgm/9U2Z5Rf20xMEQRBNBEviyOPxwOn09+pyOBxIT08P+6S02L17N44ePYrdu3fD4/Fg/fr1AIAuXbogPT0dX375JQ4cOIDTTjsNycnJKCoqwmOPPYa77rpLPscNN9yAF198Effccw+uvvpq/PDDD/jwww+xYMGCqLyGULDL4shvhUmyGVuO+IBpNoOMd6NJqfwKcRSozpFgLsqHFUct0l14YUJfE0dZhwxHBEEQRDiwJI5EUcSkSZNkS0xNTQ1uuOEGpKWlKcZ98skn4ZthA9OnT8ebb74pP+/b17fA/vjjjxg2bBiSkpLw0ksvYerUqRBFEV26dMHTTz+NyZMny8d07NgRCxYswNSpU/Hcc8+hTZs2eO211+IqjV8PyXJU3WA5klxmWgUjJfiYIIcJy1Fykt9apI45guq5GcuRViZdJKDK0wRBEEQ4sCSOJk6cqHh+xRVXhHUyRsybN8+wxtGYMWMwZsyYgOcZNmwY1q1bF8aZRQfJ6lPdYNWRhI6R7Ya3HEliSRSBOj23GlODx8kVcuS1h00Q5KrbRtRr1FCKBKSNCIIgiHBgSRzNnTs3UvMgAmDnYo6kNHsjQSBo1CGyCwLqRVFdBLLe9zw5yW8tsqmEj1osndoxBwPaN0PXfH33qserzoSLBALFHBEEQRBhIKgK2UT0kBZ5PiDbodOeg8Vu4wsjNgger1ocsQHZEryw0qqQ7bDb8NGNgwznwVupCIIgCCKeCapCNhF97FzMUZJsOTJ2q/HWFLuO4JECspMV4kh5PrUdyZwfq3maM/AggiAIgogTyHKUIDgaIq9V4sjgGL63GqBueiq52bQCstWWIy6VP4C0fvnyfvju9wO44rT2xgMJgiAIIo4gcZQgSG40KZVfas9hHHPE1f6BqBJLkpvN3SCO2Aw1XgxZtRydfVJLnH1SS8MxBEEQBBFvkFstQXBwqsYhW47MZ6sBQKpTqYclN5tkOWKzz1RuNVW2WuB5EwRBEESiQeIoQeDdYXIqv2FvNeV+UQQuH9hO87x1Den2dsZXxp86UIB2PEEh4ARBEESwkDiKc8SGdDUHF+Bzbp9WAALEHNnUlqPrh3ZWjmnYLVuOmCy4QAUeg20bQxAEQRDxDImjBIFN3e/bLhtThncBEMhypAzIFkVfTJGTaSMiueekbDW7BbcaSSOCIAiiMULiKEFgY46UqfFGMUfaLTVY65C03y1bjvwfiWZcCj4f30TtOgiCIIjGCGWrJQisRadZql+0BLIcKWKOGv46HTZUuqUebb5tklvNbhPwxMW9sXbXMYztpcw00yoCGa+IVCKbIAiCCBISRwkCG3OUk+4XR0bWG4ErAinBWofkbLWG9iEOu4BLB7TFpQPaapxP+ZwsRwRBEERjhNxqcY5k/2BjjnJYy5HBsXzMkGRN0apl5E/l1/9ImK2ITRAEQRCJDImjBIGNOcpJM+dW41uFSCgDshtijjQCsnlUliMqdEQQBEE0QkgcJQisaGmebjLmSEe8sJYj2a3m9Ykjvtgki7pCdvxCEUcEQRBEsJA4ShDYmCNFQLaBRNETTqw4kgRUgzYytAapeqtRzBFBEATRCCFxlCDYmZij5mku/44A2WosUgKXVkB2fYM6CtSrzeg5QRAEQTQGSBzFOw2Cpq4hJghQZqtZCciWYGOOZMuRKB1jwa1G4oggCIJohJA4inOk2JmW2clIdzmQk+ZEmtMu7zdq4aGyHDWcLYmNOeI+AXpB3FrXisfste4FGQCAYd1yYzwTgiAIIlGhOkcJgsthx6oHRsBuU9YuMrYcBc5W48WQoVtNdX6Di8eIr24Zguo6DzKSk2I9FYIgCCJBIXGUQKQ61W+XcYVs5XMp5silEZDtP8Z8gHc8Np512G3I4M1hBEEQBGEBWkUSHCPXFi98JBcd21uNtxwZWYPUvdXMzZEgCIIgEgkSRwmOcXaZ9s4kjYBsCStFIOMx5oggCIIgQoXEUZwTqIEqL0/YIo567UMchjFH5gWPQJ8egiAIohFCy1uCw4sZ1vKj3z6EGWMh5oi3MpHdiCAIgmiMkDhKcHgto7QcacccOQzdagbX4p5ThWyCIAiiMULiKMHh5QlrCdLTLg5FQDZ3PkvZamZmSBAEQRCJBYmjBIcXMwqrEK9epPYhNrYIpIVUflW2GqkjgiAIovFB4ijB4fUJK3ZsOu+uwzDmyPy1CIIgCKIxQuIozjHOVVO71ZJMxBwpGs9aSeXnnpPliCAIgmiMkDhKcFSWI7u+OJJIMhhjmMpPMUcEQRBEE4DEUcLDxRzZ9GOO5DpHhjFHRleimCOCIAii8UPiKMExjDnS0S7G7UOsVMgmCIIgiMYHiaMEx6hCNu8iM1PnyLAIpMoFZ36eBEEQBJEokDiKcwJ0D9FI5TdjOdJvH2LsVjO+NkEQBEE0BkgcJTjqIpBGMUe+v4qAbCt1jkgLEQRBEE0AEkcJDi9mWLeaXlq+MiCbO59h+xBSRwRBEETjh8RRgmMUkK0ukN2QrWaQym+YgUbaiCAIgmgCkDhqZBjVMNJ0q4WQrUYQBEEQjRESR3HKbSO6AgAevaCX4Ti15ShwzJHDwHdm3FuNIAiCIBo/jlhPgNBm6lkn4OrBHZGVmmQ4jo8Dcpioc2TsVjO4FpmOCIIgiCYAWY7imEDCCAgUc6QtZlwOu+7xfPaa4loBZ0MQBEEQiQ9ZjhIcXtwYZatJ7UNObpuNgR1z0KZZqspSRDFHBEEQRFOHxFGCw7vVzLQPsdsEfHB9IQBg5td/KPYZudVY4URCiSAIgmiskFstweFFClv9Wq99iPIE/PlI9RAEQRBNGxJHCY66QnZgyxEL70bTKxwJKIUYSSiCIAiisULiKMExijnSS+VXHM89N+6tRpKIIAiCaPyQOEp4jBrPBhYzVASSIAiCIJSQOEpw1JYjpggk9+6KGlFHvKWIuocQBEEQTR0SRwmOUcyQGcsRr4aMY44C11AiCIIgiESHxFGCw0sUqzFHluocWZ0cQRAEQSQgJI4SHKMK2Way1fgga+P2IexxBEEQBNE4IXGU4Bj1VjNT58hahWySRARBEETjh8RRgqMKyGaKQJqqc2TjLUfmBBDpJIIgCKKxQuKokWE37K0W+Hiz4oggCIIgGiskjhIcK0UgteDHkDYiCIIgmjokjhIcPg7Irog54kcHrnNklMpPEARBEE0BEkcJjplU/sFdmgMA/jmwvfp4CwHZyuuSiCIIgiAaJ45YT4AIDVUqvyIg27fzv/8agPW7j+PUjjmq49XtQ8I/R4IgCIJIJBLCcrRz505cc8016NixI1JSUtC5c2c8+OCDcLvdinG//fYbTj/9dCQnJ6Nt27Z44oknVOeaP38+unfvjuTkZJx00kn4+uuvo/UyIgJvwUliLUcN726q04FBXVooMtl0z2c26IhEFEEQBNFISQhxtGXLFni9XrzyyivYvHkznnnmGcyZMwf333+/PKasrAyjRo1C+/btsWbNGjz55JOYMWMGXn31VXnMsmXLMGHCBFxzzTVYt24dxo8fj/Hjx2PTpk2xeFlhwbgIpPWAbIo5IgiCIJo6CeFWGzNmDMaMGSM/79SpE7Zu3YrZs2fjqaeeAgC8++67cLvdeOONN+B0OtGzZ0+sX78eTz/9NK677joAwHPPPYcxY8bg7rvvBgA88sgjKCoqwosvvog5c+ZE/4WFAV7KWBdHxs/NXpcgCIIgGgsJYTnSorS0FDk5/hia5cuX44wzzoDT6ZS3jR49Glu3bsWxY8fkMSNHjlScZ/To0Vi+fLnudWpra1FWVqb4F08YZauZah+iSuUn2UMQBEE0bRJSHG3btg0vvPACrr/+enlbSUkJ8vPzFeOk5yUlJYZjpP1azJw5E1lZWfK/tm3bhutlhAVey7DixozQCdpyRBqKIAiCaKTEVBzdd999EATB8N+WLVsUx+zbtw9jxozBJZdcgsmTJ0d8jtOmTUNpaan8b8+ePRG/phV4jcKKG1NCh2KOCIIgCEJBTGOO7rzzTkyaNMlwTKdOneTH+/fvx/DhwzFo0CBFoDUAFBQU4MCBA4pt0vOCggLDMdJ+LVwuF1wuV8DXEitUbjFGLpkROlYazxIEQRBEUyCm4ig3Nxe5ubmmxu7btw/Dhw9H//79MXfuXNhsSqNXYWEhHnjgAdTV1SEpKQkAUFRUhG7duqFZs2bymO+//x633367fFxRUREKCwvD84JigDog2//YjNBx2PiYozBMiiAIgiASmISIOdq3bx+GDRuGdu3a4amnnsKhQ4dQUlKiiBX65z//CafTiWuuuQabN2/GBx98gOeeew533HGHPOa2227DwoULMWvWLGzZsgUzZszA6tWrcfPNN8fiZYUF45ijwMfbOZFJFbIJgiCIpk5CpPIXFRVh27Zt2LZtG9q0aaPYJza0ms/KysKiRYswZcoU9O/fHy1atMD06dPlNH4AGDRoEN577z38+9//xv3334+uXbvis88+Q69evaL6esIJL1JYcWNG6CTZuZgjMh0RBEEQTZyEEEeTJk0KGJsEAL1798Yvv/xiOOaSSy7BJZdcEqaZxQEG2WZmxBEfl2S6QDZpKIIgCKKRkhBuNUIfo8axZhLPHIxbTRCozhFBEARBkDhKcFRShtlgRuiwbjUrmWokoQiCIIjGComjBIcPwLYqWli3GsUbEQRBEASJo4SHlTN2QYBo8fgku9KtRhAEQRBNHRJHCY5gMQCbx2qjWoIgCIJo7JA4SnAUAdhBvJtszBG1DiEIgiAIEkeNCpsgwKpfjc9WMwtltREEQRCNFRJHCQ6rUXwxR9bUEbnVCIIgCEIJiaMEh62QLQjACfkZlo5nA7KteNVIRhEEQRCNlYSokE3oo7Ac2QS0aZaKr24ZguzUJFPHK1L5KeaIIAiCIEgcJTqsnJHcYr1aZ5k+ng3IthRHRDqKIAiCaKSQWy3BERTZaqGm8odlSgRBEASR0JA4SnCUliPrxytjjkgdEQRBEASJowSHz1azioOy1QiCIAhCAYmjBEfZWy0YceT/CHhF82UASEYRBEEQjRUSR42IYLLNHExAtsdrtTMbQRAEQTQ+SBw1AiSDUTDiiD3GijaiCtkEQRBEY4XEUSNAihUKRq+wAdmiBbcaQRAEQTRWSBw1AiRNFExANms58liJOSLDEUEQBNFIIXHUCJCESqjZZl6KOSIIgiAIEkeNAam/WjBFIFmseNXIcEQQBEE0VkgcNQZky1Fop7HiViMIgiCIxgqJo0aAHHMUojqyUueIIAiCIBorJI4aAVKoUajp9V5vGCZDEARBEAkOiaNGgBRzZA/RrWapQjalqxEEQRCNFBJHjYCwZauRW40gCIIgSBw1BiRJFGq2mqUK2SFdiSAIgiDiFxJHjQDJxRVMEUiCIAiCIJSQOGoE+C1HUbwm6TCCIAiikULiqDEQppgjgiAIgiBIHDUKJFFE4oggCIIgQofEUSNA0kShFoEkCIIgCILEUaNAjjmKqjYiIUYQBEE0TkgcNQIEcqsRBEEQRNggcdQI8FuOoieOSIcRBEEQjRUSR40AijkiCIIgiPBB4qhR4BNF0bTmkAwjCIIgGiskjhoBZDkiCIIgiPBB4qgRQDFHBEEQBBE+SBw1AoQYVMgWLTSpJQiCIIhEgsRRI0BosB3Z6d0kCIIgiJCh5bQREAvLEbnVCIIgiMYKiaNGgBxzRAHZBEEQBBEyJI4aAf4K2VG8JiXzEwRBEI0UEkeNADmVn3xdBEEQBBEyJI4aAZImEijmiCAIgiBChsRRI8CfrRacYnniot4AgLtHdwvbnAiCIAgiUXHEegJE6Piz1YI7/tJT2mJ0zwJkpSaZv2ZwlyIIgiCIuIcsR42AcGSrWRFGBEEQBNGYIXHUCPBnq5E9hyAIgiBChcRRI0CSRJStRhAEQRChQ+KoMRBizFFQlyQhRhAEQTRSSBw1AqhCNkEQBEGEDxJHjQDJikNuNYIgCIIIHRJHjQCyHBEEQRBE+CBx1Ajw1zmiCtkEQRAEESokjhoBthg0niUIgiCIxgqJo0ZEsO1DCIIgCILwQ+KoESAFZFN6PUEQBEGETkKIo507d+Kaa65Bx44dkZKSgs6dO+PBBx+E2+1WjBEEQfVvxYoVinPNnz8f3bt3R3JyMk466SR8/fXX0X45YcdfBDKK1yQdRhAEQTRSEqLx7JYtW+D1evHKK6+gS5cu2LRpEyZPnozKyko89dRTirHfffcdevbsKT9v3ry5/HjZsmWYMGECZs6ciXPOOQfvvfcexo8fj7Vr16JXr15Rez3hRg7IJrcaQRAEQYRMQoijMWPGYMyYMfLzTp06YevWrZg9e7ZKHDVv3hwFBQWa53nuuecwZswY3H333QCARx55BEVFRXjxxRcxZ86cyL2ACBPNbLV0lwMVtfUo7NQ88GCCIAiCSEASwq2mRWlpKXJyclTbzzvvPOTl5WHIkCH44osvFPuWL1+OkSNHKraNHj0ay5cv171ObW0tysrKFP/iDQHRazz79a2nY9rY7ph+bs/AgwmCIAgiAUlIcbRt2za88MILuP766+Vt6enpmDVrFubPn48FCxZgyJAhGD9+vEIglZSUID8/X3Gu/Px8lJSU6F5r5syZyMrKkv+1bds2/C8oRCRNZI/Cu9mueSquH9oZ6a6EMDoSBEEQhGViKo7uu+8+zSBq9t+WLVsUx+zbtw9jxozBJZdcgsmTJ8vbW7RogTvuuAMDBw7EKaecgscffxxXXHEFnnzyyZDmOG3aNJSWlsr/9uzZE9L5IoFkL6JsNYIgCIIInZj+/L/zzjsxadIkwzGdOnWSH+/fvx/Dhw/HoEGD8OqrrwY8/8CBA1FUVCQ/LygowIEDBxRjDhw4oBujBAAulwsulyvgtWIK9VYjCIIgiLARU3GUm5uL3NxcU2P37duH4cOHo3///pg7dy5stsBGr/Xr16Nly5by88LCQnz//fe4/fbb5W1FRUUoLCy0PPd4Qk7lp2w1giAIggiZhAgc2bdvH4YNG4b27dvjqaeewqFDh+R9ktXnzTffhNPpRN++fQEAn3zyCd544w289tpr8tjbbrsNQ4cOxaxZszBu3Di8//77WL16tSkrVDwjGYzIcEQQBEEQoZMQ4qioqAjbtm3Dtm3b0KZNG8U+URTlx4888gh27doFh8OB7t2744MPPsDFF18s7x80aBDee+89/Pvf/8b999+Prl274rPPPkvoGkeAP0uNLEcEQRAEETqCyKoLIiBlZWXIyspCaWkpMjMzYz0dAMDFs5dh9a5jePnyfjj7pJaBDyAIgiCIJoaV9TshLEeEMWNPaomjVW70b98s1lMhCIIgiISHLEcWiUfLEUEQBEEQxlhZvxOyCCRBEARBEESkIHFEEARBEATBQOKIIAiCIAiCgcQRQRAEQRAEA4kjgiAIgiAIBhJHBEEQBEEQDCSOCIIgCIIgGEgcEQRBEARBMJA4IgiCIAiCYCBxRBAEQRAEwUDiiCAIgiAIgoHEEUEQBEEQBAOJI4IgCIIgCAYSRwRBEARBEAyOWE8g0RBFEQBQVlYW45kQBEEQBGEWad2W1nEjSBxZpLy8HADQtm3bGM+EIAiCIAirlJeXIysry3CMIJqRUISM1+vF/v37kZGRAUEQwnrusrIytG3bFnv27EFmZmZYz034ofscPeheRwe6z9GB7nP0iMS9FkUR5eXlaNWqFWw246gishxZxGazoU2bNhG9RmZmJv3HiwJ0n6MH3evoQPc5OtB9jh7hvteBLEYSFJBNEARBEATBQOKIIAiCIAiCgcRRHOFyufDggw/C5XLFeiqNGrrP0YPudXSg+xwd6D5Hj1jfawrIJgiCIAiCYCDLEUEQBEEQBAOJI4IgCIIgCAYSRwRBEARBEAwkjgiCIAiCIBhIHMUJL730Ejp06IDk5GQMHDgQq1ativWUEo6ff/4Z5557Llq1agVBEPDZZ58p9ouiiOnTp6Nly5ZISUnByJEj8ddffynGHD16FJdffjkyMzORnZ2Na665BhUVFVF8FfHNzJkzccoppyAjIwN5eXkYP348tm7dqhhTU1ODKVOmoHnz5khPT8dFF12EAwcOKMbs3r0b48aNQ2pqKvLy8nD33Xejvr4+mi8l7pk9ezZ69+4tF8ErLCzEN998I++n+xwZHn/8cQiCgNtvv13eRvc6PMyYMQOCICj+de/eXd4fT/eZxFEc8MEHH+COO+7Agw8+iLVr16JPnz4YPXo0Dh48GOupJRSVlZXo06cPXnrpJc39TzzxBJ5//nnMmTMHK1euRFpaGkaPHo2amhp5zOWXX47NmzejqKgIX331FX7++Wdcd9110XoJcc/ixYsxZcoUrFixAkVFRairq8OoUaNQWVkpj5k6dSq+/PJLzJ8/H4sXL8b+/ftx4YUXyvs9Hg/GjRsHt9uNZcuW4c0338S8efMwffr0WLykuKVNmzZ4/PHHsWbNGqxevRpnnnkmzj//fGzevBkA3edI8Ouvv+KVV15B7969FdvpXoePnj17ori4WP63ZMkSeV9c3WeRiDmnnnqqOGXKFPm5x+MRW7VqJc6cOTOGs0psAIiffvqp/Nzr9YoFBQXik08+KW87fvy46HK5xP/973+iKIri77//LgIQf/31V3nMN998IwqCIO7bty9qc08kDh48KAIQFy9eLIqi754mJSWJ8+fPl8f88ccfIgBx+fLloiiK4tdffy3abDaxpKREHjN79mwxMzNTrK2tje4LSDCaNWsmvvbaa3SfI0B5ebnYtWtXsaioSBw6dKh42223iaJIn+lw8uCDD4p9+vTR3Bdv95ksRzHG7XZjzZo1GDlypLzNZrNh5MiRWL58eQxn1rjYsWMHSkpKFPc5KysLAwcOlO/z8uXLkZ2djQEDBshjRo4cCZvNhpUrV0Z9zolAaWkpACAnJwcAsGbNGtTV1Snuc/fu3dGuXTvFfT7ppJOQn58vjxk9ejTKyspkqwihxOPx4P3330dlZSUKCwvpPkeAKVOmYNy4cYp7CtBnOtz89ddfaNWqFTp16oTLL78cu3fvBhB/95kaz8aYw4cPw+PxKN5sAMjPz8eWLVtiNKvGR0lJCQBo3mdpX0lJCfLy8hT7HQ4HcnJy5DGEH6/Xi9tvvx2DBw9Gr169APjuodPpRHZ2tmIsf5+13gdpH+Fn48aNKCwsRE1NDdLT0/Hpp5+iR48eWL9+Pd3nMPL+++9j7dq1+PXXX1X76DMdPgYOHIh58+ahW7duKC4uxkMPPYTTTz8dmzZtirv7TOKIIIigmDJlCjZt2qSIGSDCS7du3bB+/XqUlpbio48+wsSJE7F48eJYT6tRsWfPHtx2220oKipCcnJyrKfTqBk7dqz8uHfv3hg4cCDat2+PDz/8ECkpKTGcmRpyq8WYFi1awG63qyLyDxw4gIKCghjNqvEh3Uuj+1xQUKAKgq+vr8fRo0fpveC4+eab8dVXX+HHH39EmzZt5O0FBQVwu904fvy4Yjx/n7XeB2kf4cfpdKJLly7o378/Zs6ciT59+uC5556j+xxG1qxZg4MHD6Jfv35wOBxwOBxYvHgxnn/+eTgcDuTn59O9jhDZ2dk44YQTsG3btrj7TJM4ijFOpxP9+/fH999/L2/zer34/vvvUVhYGMOZNS46duyIgoICxX0uKyvDypUr5ftcWFiI48ePY82aNfKYH374AV6vFwMHDoz6nOMRURRx880349NPP8UPP/yAjh07Kvb3798fSUlJivu8detW7N69W3GfN27cqBCiRUVFyMzMRI8ePaLzQhIUr9eL2tpaus9hZMSIEdi4cSPWr18v/xswYAAuv/xy+THd68hQUVGBv//+Gy1btoy/z3RYw7uJoHj//fdFl8slzps3T/z999/F6667TszOzlZE5BOBKS8vF9etWyeuW7dOBCA+/fTT4rp168Rdu3aJoiiKjz/+uJidnS1+/vnn4m+//Saef/75YseOHcXq6mr5HGPGjBH79u0rrly5UlyyZInYtWtXccKECbF6SXHHjTfeKGZlZYk//fSTWFxcLP+rqqqSx9xwww1iu3btxB9++EFcvXq1WFhYKBYWFsr76+vrxV69eomjRo0S169fLy5cuFDMzc0Vp02bFouXFLfcd9994uLFi8UdO3aIv/32m3jfffeJgiCIixYtEkWR7nMkYbPVRJHudbi48847xZ9++kncsWOHuHTpUnHkyJFiixYtxIMHD4qiGF/3mcRRnPDCCy+I7dq1E51Op3jqqaeKK1asiPWUEo4ff/xRBKD6N3HiRFEUfen8//nPf8T8/HzR5XKJI0aMELdu3ao4x5EjR8QJEyaI6enpYmZmpnjVVVeJ5eXlMXg18YnW/QUgzp07Vx5TXV0t3nTTTWKzZs3E1NRU8YILLhCLi4sV59m5c6c4duxYMSUlRWzRooV45513inV1dVF+NfHN1VdfLbZv3150Op1ibm6uOGLECFkYiSLd50jCiyO61+HhsssuE1u2bCk6nU6xdevW4mWXXSZu27ZN3h9P91kQRVEMry2KIAiCIAgicaGYI4IgCIIgCAYSRwRBEARBEAwkjgiCIAiCIBhIHBEEQRAEQTCQOCIIgiAIgmAgcUQQBEEQBMFA4oggCIIgCIKBxBFBEI2WnTt3QhAErF+/PmLXmDRpEsaPHx+x8xMEEX1IHBEEEbdMmjQJgiCo/o0ZM8bU8W3btkVxcTF69eoV4ZkSBNGYcMR6AgRBEEaMGTMGc+fOVWxzuVymjrXb7dQVnSAIy5DliCCIuMblcqGgoEDxr1mzZgAAQRAwe/ZsjB07FikpKejUqRM++ugj+VjerXbs2DFcfvnlyM3NRUpKCrp27aoQXhs3bsSZZ56JlJQUNG/eHNdddx0qKirk/R6PB3fccQeys7PRvHlz3HPPPeA7MHm9XsycORMdO3ZESkoK+vTpo5hToDkQBBF7SBwRBJHQ/Oc//8FFF12EDRs24PLLL8c//vEP/PHHH7pjf//9d3zzzTf4448/MHv2bLRo0QIAUFlZidGjR6NZs2b49ddfMX/+fHz33Xe4+eab5eNnzZqFefPm4Y033sCSJUtw9OhRfPrpp4przJw5E2+99RbmzJmDzZs3Y+rUqbjiiiuwePHigHMgCCJOCHsrW4IgiDAxceJE0W63i2lpaYp/jz76qCiKoghAvOGGGxTHDBw4ULzxxhtFURTFHTt2iADEdevWiaIoiueee6541VVXaV7r1VdfFZs1ayZWVFTI2xYsWCDabDaxpKREFEVRbNmypfjEE0/I++vq6sQ2bdqI559/viiKolhTUyOmpqaKy5YtU5z7mmuuESdMmBBwDgRBxAcUc0QQRFwzfPhwzJ49W7EtJydHflxYWKjYV1hYqJudduONN+Kiiy7C2rVrMWrUKIwfPx6DBg0CAPzxxx/o06cP0tLS5PGDBw+G1+vF1q1bkZycjOLiYgwcOFDe73A4MGDAANm1tm3bNlRVVeGss85SXNftdqNv374B50AQRHxA4oggiLgmLS0NXbp0Ccu5xo4di127duHrr79GUVERRowYgSlTpuCpp54Ky/ml+KQFCxagdevWin1SEHmk50AQROhQzBFBEAnNihUrVM9PPPFE3fG5ubmYOHEi3nnnHTz77LN49dVXAQAnnngiNmzYgMrKSnns0qVLYbPZ0K1bN2RlZaFly5ZYuXKlvL++vh5r1qyRn/fo0QMulwu7d+9Gly5dFP/atm0bcA4EQcQHZDkiCCKuqa2tRUlJiWKbw+GQg5jnz5+PAQMGYMiQIXj33XexatUqvP7665rnmj59Ovr374+ePXuitrYWX331lSykLr/8cjz44IOYOHEiZsyYgUOHDuGWW27BlVdeifz8fADAbbfdhscffxxdu3ZF9+7d8fTTT+P48ePy+TMyMnDXXXdh6tSp8Hq9GDJkCEpLS7F06VJkZmZi4sSJhnMgCCI+IHFEEERcs3DhQrRs2VKxrVu3btiyZQsA4KGHHsL777+Pm266CS1btsT//vc/9OjRQ/NcTqcT06ZNw86dO5GSkoLTTz8d77//PgAgNTUV3377LW677TaccsopSE1NxUUXXYSnn35aPv7OO+9EcXExJk6cCJvNhquvvhoXXHABSktL5TGPPPIIcnNzMXPmTGzfvh3Z2dno168f7r///oBzIAgiPhBEkSvSQRAEkSAIgoBPP/2U2ncQBBFWKOaIIAiCIAiCgcQRQRAEQRAEA8UcEQSRsFBUAEEQkYAsRwRBEARBEAwkjgiCIAiCIBhIHBEEQRAEQTCQOCIIgiAIgmAgcUQQBEEQBMFA4oggCIIgCIKBxBFBEARBEAQDiSOCIAiCIAgGEkcEQRAEQRAM/x8gALKh2RUTlQAAAABJRU5ErkJggg=="
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "ncol = 12\n",
    "nrow = 4\n",
    "env = CliffWalkingEnv(ncol, nrow)\n",
    "np.random.seed(0)\n",
    "epsilon = 0.1\n",
    "alpha = 0.1\n",
    "gamma = 0.9\n",
    "agent = Sarsa(ncol, nrow, epsilon, alpha, gamma)\n",
    "num_episodes = 500  # 智能体在环境中运行的序列的数量\n",
    "\n",
    "return_list = []  # 记录每一条序列的回报\n",
    "for i in range(10):  # 显示10个进度条\n",
    "    # tqdm的进度条功能\n",
    "    with tqdm(total=int(num_episodes / 10), desc='Iteration %d' % i) as pbar:\n",
    "        for i_episode in range(int(num_episodes / 10)):  # 每个进度条的序列数\n",
    "            episode_return = 0\n",
    "            state = env.reset()\n",
    "            action = agent.take_action(state)\n",
    "            done = False\n",
    "            while not done:\n",
    "                next_state, reward, done = env.step(action)\n",
    "                next_action = agent.take_action(next_state)\n",
    "                episode_return += reward  # 这里回报的计算不进行折扣因子衰减\n",
    "                agent.update(state, action, reward, next_state, next_action)\n",
    "                state = next_state\n",
    "                action = next_action\n",
    "            return_list.append(episode_return)\n",
    "            if (i_episode + 1) % 10 == 0:  # 每10条序列打印一下这10条序列的平均回报\n",
    "                pbar.set_postfix({\n",
    "                    'episode':\n",
    "                    '%d' % (num_episodes / 10 * i + i_episode + 1),\n",
    "                    'return':\n",
    "                    '%.3f' % np.mean(return_list[-10:])\n",
    "                })\n",
    "            pbar.update(1)\n",
    "episodes_list = list(range(len(return_list)))\n",
    "plt.plot(episodes_list, return_list)\n",
    "plt.xlabel('Episodes')\n",
    "plt.ylabel('Returns')\n",
    "plt.title('Sarsa on {}'.format('Cliff Walking'))\n",
    "plt.show()"
   ],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "start_time": "2023-07-04T14:40:45.711352Z",
     "end_time": "2023-07-04T14:40:46.257249Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "outputs": [],
   "source": [],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "start_time": "2023-07-04T14:40:46.258247Z",
     "end_time": "2023-07-04T14:40:46.346039Z"
    }
   }
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "outputs": [],
   "source": [],
   "metadata": {
    "collapsed": false,
    "ExecuteTime": {
     "start_time": "2023-07-04T14:40:46.273209Z",
     "end_time": "2023-07-04T14:40:46.346039Z"
    }
   }
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}
